fix(editor): Add back prompt requesting to save unsaved changes (no-changelog) (#10190)
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import {
|
||||
HTTP_REQUEST_NODE_TYPE,
|
||||
MODAL_CANCEL,
|
||||
MODAL_CONFIRM,
|
||||
PLACEHOLDER_EMPTY_WORKFLOW_ID,
|
||||
PLACEHOLDER_FILLED_AT_EXECUTION_TIME,
|
||||
@@ -66,6 +67,8 @@ import { useTelemetry } from '@/composables/useTelemetry';
|
||||
import { useProjectsStore } from '@/stores/projects.store';
|
||||
import { useTagsStore } from '@/stores/tags.store';
|
||||
import useWorkflowsEEStore from '@/stores/workflows.ee.store';
|
||||
import { useNpsSurveyStore } from '@/stores/npsSurvey.store';
|
||||
import type { NavigationGuardNext } from 'vue-router';
|
||||
|
||||
type ResolveParameterOptions = {
|
||||
targetItem?: TargetItem;
|
||||
@@ -1055,6 +1058,52 @@ export function useWorkflowHelpers(options: { router: ReturnType<typeof useRoute
|
||||
}
|
||||
}
|
||||
|
||||
async function promptSaveUnsavedWorkflowChanges(
|
||||
next: NavigationGuardNext,
|
||||
{
|
||||
confirm = async () => true,
|
||||
cancel = async () => {},
|
||||
}: {
|
||||
confirm?: () => Promise<boolean>;
|
||||
cancel?: () => Promise<void>;
|
||||
} = {},
|
||||
) {
|
||||
if (uiStore.stateIsDirty) {
|
||||
const npsSurveyStore = useNpsSurveyStore();
|
||||
|
||||
const confirmModal = await message.confirm(
|
||||
i18n.baseText('generic.unsavedWork.confirmMessage.message'),
|
||||
{
|
||||
title: i18n.baseText('generic.unsavedWork.confirmMessage.headline'),
|
||||
type: 'warning',
|
||||
confirmButtonText: i18n.baseText('generic.unsavedWork.confirmMessage.confirmButtonText'),
|
||||
cancelButtonText: i18n.baseText('generic.unsavedWork.confirmMessage.cancelButtonText'),
|
||||
showClose: true,
|
||||
},
|
||||
);
|
||||
|
||||
if (confirmModal === MODAL_CONFIRM) {
|
||||
const saved = await saveCurrentWorkflow({}, false);
|
||||
if (saved) {
|
||||
await npsSurveyStore.fetchPromptsData();
|
||||
}
|
||||
uiStore.stateIsDirty = false;
|
||||
|
||||
const goToNext = await confirm();
|
||||
if (goToNext) {
|
||||
next();
|
||||
}
|
||||
} else if (confirmModal === MODAL_CANCEL) {
|
||||
await cancel();
|
||||
|
||||
uiStore.stateIsDirty = false;
|
||||
next();
|
||||
}
|
||||
} else {
|
||||
next();
|
||||
}
|
||||
}
|
||||
|
||||
function initState(workflowData: IWorkflowDb) {
|
||||
workflowsStore.addWorkflow(workflowData);
|
||||
workflowsStore.setActive(workflowData.active || false);
|
||||
@@ -1107,6 +1156,7 @@ export function useWorkflowHelpers(options: { router: ReturnType<typeof useRoute
|
||||
updateNodePositions,
|
||||
removeForeignCredentialsFromWorkflow,
|
||||
getWorkflowProjectRole,
|
||||
promptSaveUnsavedWorkflowChanges,
|
||||
initState,
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user