diff --git a/frontend/src/lib/components/FlowBuilder.svelte b/frontend/src/lib/components/FlowBuilder.svelte index c0126a42cd..a596077264 100644 --- a/frontend/src/lib/components/FlowBuilder.svelte +++ b/frontend/src/lib/components/FlowBuilder.svelte @@ -109,14 +109,22 @@ let loadingSave = false let loadingDraft = false - async function saveDraft(): Promise { + async function saveDraft(forceSave = false): Promise { if (!newFlow && !savedFlow) { return } if (savedFlow) { const draftOrDeployed = cleanValueProperties(savedFlow.draft || savedFlow) const current = cleanValueProperties($flowStore) - if (orderedJsonStringify(draftOrDeployed) === orderedJsonStringify(current)) { + if (!forceSave && orderedJsonStringify(draftOrDeployed) === orderedJsonStringify(current)) { + sendUserToast('No changes detected, ignoring', false, [ + { + label: 'Save anyway', + callback: () => { + saveDraft(true) + } + } + ]) return } } diff --git a/frontend/src/lib/components/ScriptBuilder.svelte b/frontend/src/lib/components/ScriptBuilder.svelte index 41fa7e60bd..9117b960ae 100644 --- a/frontend/src/lib/components/ScriptBuilder.svelte +++ b/frontend/src/lib/components/ScriptBuilder.svelte @@ -221,14 +221,22 @@ loadingSave = false } - async function saveDraft(): Promise { + async function saveDraft(forceSave = false): Promise { if (initialPath != '' && !savedScript) { return } if (savedScript) { const draftOrDeployed = cleanValueProperties(savedScript.draft || savedScript) const current = cleanValueProperties(script) - if (orderedJsonStringify(draftOrDeployed) === orderedJsonStringify(current)) { + if (!forceSave && orderedJsonStringify(draftOrDeployed) === orderedJsonStringify(current)) { + sendUserToast('No changes detected, ignoring', false, [ + { + label: 'Save anyway', + callback: () => { + saveDraft(true) + } + } + ]) return } } diff --git a/frontend/src/lib/components/apps/editor/AppEditorHeader.svelte b/frontend/src/lib/components/apps/editor/AppEditorHeader.svelte index 9030b5f402..a7b8c81980 100644 --- a/frontend/src/lib/components/apps/editor/AppEditorHeader.svelte +++ b/frontend/src/lib/components/apps/editor/AppEditorHeader.svelte @@ -344,7 +344,7 @@ draftDrawerOpen = false } - async function saveDraft() { + async function saveDraft(forceSave = false) { if ($page.params.path == undefined) { // initial draft draftDrawerOpen = true @@ -360,7 +360,15 @@ path: newPath || savedApp.draft?.path || savedApp.path, policy }) - if (orderedJsonStringify(draftOrDeployed) === orderedJsonStringify(current)) { + if (!forceSave && orderedJsonStringify(draftOrDeployed) === orderedJsonStringify(current)) { + sendUserToast('No changes detected, ignoring', false, [ + { + label: 'Save anyway', + callback: () => { + saveDraft(true) + } + } + ]) return } loading.saveDraft = true @@ -1123,7 +1131,7 @@