From 984658f5e9896d3496e88976585ec070b0b7afa1 Mon Sep 17 00:00:00 2001 From: zxhlyh Date: Wed, 17 Jul 2024 16:51:48 +0800 Subject: [PATCH] fix: workflow sync before export (#6380) --- .../hooks/use-workflow-interactions.ts | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/web/app/components/workflow/hooks/use-workflow-interactions.ts b/web/app/components/workflow/hooks/use-workflow-interactions.ts index 109771dc87..88299af712 100644 --- a/web/app/components/workflow/hooks/use-workflow-interactions.ts +++ b/web/app/components/workflow/hooks/use-workflow-interactions.ts @@ -1,4 +1,7 @@ -import { useCallback } from 'react' +import { + useCallback, + useState, +} from 'react' import { useTranslation } from 'react-i18next' import { useReactFlow } from 'reactflow' import { useWorkflowStore } from '../store' @@ -10,6 +13,7 @@ import { } from '../utils' import { useEdgesInteractions } from './use-edges-interactions' import { useNodesInteractions } from './use-nodes-interactions' +import { useNodesSyncDraft } from './use-nodes-sync-draft' import { useEventEmitterContextContext } from '@/context/event-emitter' import { fetchWorkflowDraft } from '@/service/workflow' import { exportAppConfig } from '@/service/apps' @@ -79,12 +83,21 @@ export const useWorkflowUpdate = () => { export const useDSL = () => { const { t } = useTranslation() const { notify } = useToastContext() + const [exporting, setExporting] = useState(false) + const { doSyncWorkflowDraft } = useNodesSyncDraft() + const appDetail = useAppStore(s => s.appDetail) const handleExportDSL = useCallback(async () => { if (!appDetail) return + + if (exporting) + return + try { + setExporting(true) + await doSyncWorkflowDraft() const { data } = await exportAppConfig(appDetail.id) const a = document.createElement('a') const file = new Blob([data], { type: 'application/yaml' }) @@ -95,7 +108,10 @@ export const useDSL = () => { catch (e) { notify({ type: 'error', message: t('app.exportFailed') }) } - }, [appDetail, notify, t]) + finally { + setExporting(false) + } + }, [appDetail, notify, t, doSyncWorkflowDraft, exporting]) return { handleExportDSL,