feat(editor): Prevent saving of workflow when canvas is loading (#6497)

* feat(editor): Prevent saving of pristine workflow

Signed-off-by: Oleg Ivaniv <me@olegivaniv.com>

* Prevent saving if loading

Signed-off-by: Oleg Ivaniv <me@olegivaniv.com>

* Fix 7-workflow-actions spec

Signed-off-by: Oleg Ivaniv <me@olegivaniv.com>

* Restrict delay intercept to GET only

Signed-off-by: Oleg Ivaniv <me@olegivaniv.com>

* Wait for WF patch

Signed-off-by: Oleg Ivaniv <me@olegivaniv.com>

* Add helper to remove all active WFs in e2e

Signed-off-by: Oleg Ivaniv <me@olegivaniv.com>

* Use META_KEY env var

* Remove cy.wait

* Delete debugging DB reset console log

Signed-off-by: Oleg Ivaniv <me@olegivaniv.com>

* Fix clashin mixins `isReadOnly` property

Signed-off-by: Oleg Ivaniv <me@olegivaniv.com>

---------

Signed-off-by: Oleg Ivaniv <me@olegivaniv.com>
This commit is contained in:
OlegIvaniv
2023-06-27 13:05:20 +02:00
committed by GitHub
parent d70a1cb0c8
commit f89ef83c76
11 changed files with 146 additions and 84 deletions

View File

@@ -43,6 +43,7 @@ import type {
import { externalHooks } from '@/mixins/externalHooks';
import { nodeHelpers } from '@/mixins/nodeHelpers';
import { genericHelpers } from '@/mixins/genericHelpers';
import { useToast, useMessage } from '@/composables';
import { isEqual } from 'lodash-es';
@@ -329,7 +330,7 @@ function executeData(
}
export const workflowHelpers = defineComponent({
mixins: [externalHooks, nodeHelpers],
mixins: [externalHooks, nodeHelpers, genericHelpers],
setup() {
return {
...useToast(),
@@ -699,6 +700,7 @@ export const workflowHelpers = defineComponent({
forceSave = false,
): Promise<boolean> {
const currentWorkflow = id || this.$route.params.name;
const isLoading = this.loadingService !== null;
if (!currentWorkflow || ['new', PLACEHOLDER_EMPTY_WORKFLOW_ID].includes(currentWorkflow)) {
return this.saveAsNewWorkflow({ name, tags }, redirect);
@@ -706,6 +708,9 @@ export const workflowHelpers = defineComponent({
// Workflow exists already so update it
try {
if (!forceSave && isLoading) {
return true;
}
this.uiStore.addActiveAction('workflowSaving');
const workflowDataRequest: IWorkflowDataUpdate = await this.getWorkflowDataToSave();