From de3fd0f3823ba34d570b85538bb20c71b5d1e28c Mon Sep 17 00:00:00 2001 From: StyleZhang Date: Wed, 27 Mar 2024 21:00:29 +0800 Subject: [PATCH] fix --- .../workflow/hooks/use-nodes-sync-draft.ts | 17 +++++++++-------- .../components/workflow/hooks/use-workflow.ts | 7 +++++-- web/app/components/workflow/index.tsx | 14 ++++++++------ 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/web/app/components/workflow/hooks/use-nodes-sync-draft.ts b/web/app/components/workflow/hooks/use-nodes-sync-draft.ts index b98fb83ed1..137739c63b 100644 --- a/web/app/components/workflow/hooks/use-nodes-sync-draft.ts +++ b/web/app/components/workflow/hooks/use-nodes-sync-draft.ts @@ -1,9 +1,6 @@ import { useCallback } from 'react' import produce from 'immer' -import { - useReactFlow, - useStoreApi, -} from 'reactflow' +import { useStoreApi } from 'reactflow' import { useStore, useWorkflowStore, @@ -17,7 +14,6 @@ import { useStore as useAppStore } from '@/app/components/app/store' export const useNodesSyncDraft = () => { const store = useStoreApi() const workflowStore = useWorkflowStore() - const reactFlow = useReactFlow() const featuresStore = useFeaturesStore() const { getNodesReadOnly } = useNodesReadOnly() const debouncedSyncWorkflowDraft = useStore(s => s.debouncedSyncWorkflowDraft) @@ -26,8 +22,9 @@ export const useNodesSyncDraft = () => { const { getNodes, edges, + transform, } = store.getState() - const { getViewport } = reactFlow + const [x, y, zoom] = transform const appId = useAppStore.getState().appDetail?.id if (appId) { @@ -60,7 +57,11 @@ export const useNodesSyncDraft = () => { graph: { nodes: producedNodes, edges: producedEdges, - viewport: getViewport(), + viewport: { + x, + y, + zoom, + }, }, features: { opening_statement: features.opening?.opening_statement || '', @@ -77,7 +78,7 @@ export const useNodesSyncDraft = () => { workflowStore.getState().setDraftUpdatedAt(res.updated_at) }) } - }, [store, reactFlow, featuresStore, workflowStore]) + }, [store, featuresStore, workflowStore]) const handleSyncWorkflowDraft = useCallback((sync?: boolean) => { if (getNodesReadOnly()) diff --git a/web/app/components/workflow/hooks/use-workflow.ts b/web/app/components/workflow/hooks/use-workflow.ts index b877d26a3f..9e2cf3bea4 100644 --- a/web/app/components/workflow/hooks/use-workflow.ts +++ b/web/app/components/workflow/hooks/use-workflow.ts @@ -388,7 +388,7 @@ export const useWorkflowInit = () => { const nodesInitialData = useNodesInitialData() const { handleFetchAllTools } = useFetchToolsData() const appDetail = useAppStore(state => state.appDetail)! - const { data, error, mutate } = useSWR(`/apps/${appDetail.id}/workflows/draft`, fetchWorkflowDraft) + const { data, isLoading, error, mutate } = useSWR(`/apps/${appDetail.id}/workflows/draft`, fetchWorkflowDraft) const handleFetchPreloadData = useCallback(async () => { try { @@ -446,7 +446,10 @@ export const useWorkflowInit = () => { }) } - return data + return { + data, + isLoading, + } } export const useWorkflowReadOnly = () => { diff --git a/web/app/components/workflow/index.tsx b/web/app/components/workflow/index.tsx index 658aeb60cf..8f3d511892 100644 --- a/web/app/components/workflow/index.tsx +++ b/web/app/components/workflow/index.tsx @@ -82,7 +82,7 @@ const Workflow: FC = memo(({ return () => { handleSyncWorkflowDraft(true) } - }, [handleSyncWorkflowDraft]) + }, []) const { handleNodeDragStart, @@ -130,8 +130,8 @@ const Workflow: FC = memo(({ = memo(({ ) }) - Workflow.displayName = 'Workflow' const WorkflowWrap = memo(() => { - const data = useWorkflowInit() + const { + data, + isLoading, + } = useWorkflowInit() const nodesData = useMemo(() => { if (data) @@ -186,7 +188,7 @@ const WorkflowWrap = memo(() => { return [] }, [data]) - if (!data) { + if (!data || isLoading) { return (