From b3cc9f70ff85fade613af92c02ce90d6500ec8ec Mon Sep 17 00:00:00 2001 From: Sidharth Vinod Date: Sat, 9 Oct 2021 10:33:50 +0530 Subject: [PATCH] feat: Add troubleshooting if link is broken --- src/lib/util/state.ts | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/lib/util/state.ts b/src/lib/util/state.ts index 5688493f..c9b10186 100644 --- a/src/lib/util/state.ts +++ b/src/lib/util/state.ts @@ -25,6 +25,17 @@ export const defaultState: State = { updateDiagram: true }; +const urlParseFailedState = `graph TD + A[Loading URL failed. We can try to figure out why.] -->|Decode JSON| B(Please check the console to see the JSON and error details.) + B --> C{Is the JSON correct?} + C -->|Yes| D(Please Click here to Raise an issue in github.
Including the broken link in the issue
will speed up the fix.) + C -->|No| E{Did someone
send you this link?} + E -->|Yes| F[Ask them to send
you the complete link] + E -->|No| G{Did you copy
the complete URL?} + G --> |Yes| D + G --> |"No :("| H(Try using the Timeline tab in History
from same browser you used to create the diagram.) + click D href "https://github.com/mermaid-js/mermaid-live-editor/issues/new?assignees=&labels=bug&template=bug_report.md&title=Broken%20link" "Raise issue"`; + export const codeStore = persist(writable(defaultState), localStorage(), 'codeStore'); export const base64State: Readable = derived([codeStore], ([code], set) => { set(toBase64(JSON.stringify(code), true)); @@ -32,8 +43,9 @@ export const base64State: Readable = derived([codeStore], ([code], set) export const loadState = (data: string): void => { let state: State; + let stateStr: string; try { - const stateStr = fromBase64(data); + stateStr = fromBase64(data); console.log(`Trying to load state: ${stateStr}`); state = JSON.parse(stateStr); const mermaidConfig = @@ -50,11 +62,11 @@ export const loadState = (data: string): void => { state.mermaid = JSON.stringify(mermaidConfig, null, 2); } catch (e) { + state = get(codeStore); if (data) { console.error('Init error', e); + state.code = urlParseFailedState; } - state = get(codeStore); - console.log(state); } updateCodeStore({ ...state, updateEditor: true }); };