From 920ac9c44240af27bb18955091ab0abe452c3f2a Mon Sep 17 00:00:00 2001 From: Joel Date: Tue, 17 Jun 2025 11:30:47 +0800 Subject: [PATCH] fix: last run tab data not sync and pause --- .../nodes/_base/components/node-control.tsx | 2 -- .../_base/components/workflow-panel/index.tsx | 14 ++++++++++---- .../components/workflow-panel/last-run/index.tsx | 2 +- .../workflow-panel/last-run/use-last-run.ts | 9 ++++++++- .../workflow/nodes/_base/hooks/use-one-step-run.ts | 1 + 5 files changed, 20 insertions(+), 8 deletions(-) diff --git a/web/app/components/workflow/nodes/_base/components/node-control.tsx b/web/app/components/workflow/nodes/_base/components/node-control.tsx index 55d3280c4c..5b92b7b6b4 100644 --- a/web/app/components/workflow/nodes/_base/components/node-control.tsx +++ b/web/app/components/workflow/nodes/_base/components/node-control.tsx @@ -65,8 +65,6 @@ const NodeControl: FC = ({ data: nextData, }) handleNodeSelect(id) - if (!data._isSingleRun) - handleSyncWorkflowDraft(true) }} > { diff --git a/web/app/components/workflow/nodes/_base/components/workflow-panel/index.tsx b/web/app/components/workflow/nodes/_base/components/workflow-panel/index.tsx index 03521c847d..e561e65229 100644 --- a/web/app/components/workflow/nodes/_base/components/workflow-panel/index.tsx +++ b/web/app/components/workflow/nodes/_base/components/workflow-panel/index.tsx @@ -8,6 +8,7 @@ import { useCallback, useEffect, useMemo, + useRef, useState, } from 'react' import { @@ -147,19 +148,24 @@ const BasePanel: FC = ({ const isSupportSingleRun = canRunBySingle(data.type, isChildNode) const appDetail = useAppStore(state => state.appDetail) - const [hasClickRunning, setHasClickRunning] = useState(false) + const hasClickRunning = useRef(false) const [isPaused, setIsPaused] = useState(false) useEffect(() => { if(data._singleRunningStatus === NodeRunningStatus.Running) { - setHasClickRunning(true) + hasClickRunning.current = true setIsPaused(false) } - else if(data._singleRunningStatus === undefined) { + else if(data._singleRunningStatus === undefined && hasClickRunning) { setIsPaused(true) - setHasClickRunning(false) + hasClickRunning.current = false } }, [data._singleRunningStatus]) + useEffect(() => { + // console.log(`id changed: ${id}, hasClickRunning: ${hasClickRunning.current}`) + hasClickRunning.current = false + }, [id]) + const { isShowSingleRun, hideSingleRun, diff --git a/web/app/components/workflow/nodes/_base/components/workflow-panel/last-run/index.tsx b/web/app/components/workflow/nodes/_base/components/workflow-panel/last-run/index.tsx index 111d6c8393..5323824bd9 100644 --- a/web/app/components/workflow/nodes/_base/components/workflow-panel/last-run/index.tsx +++ b/web/app/components/workflow/nodes/_base/components/workflow-panel/last-run/index.tsx @@ -59,7 +59,7 @@ const LastRun: FC = ({ if (isRunning) return - if (noLastRun || !runResult) { + if (!isPaused && (noLastRun || !runResult)) { return ( ) diff --git a/web/app/components/workflow/nodes/_base/components/workflow-panel/last-run/use-last-run.ts b/web/app/components/workflow/nodes/_base/components/workflow-panel/last-run/use-last-run.ts index 937261ca6b..bda10724ed 100644 --- a/web/app/components/workflow/nodes/_base/components/workflow-panel/last-run/use-last-run.ts +++ b/web/app/components/workflow/nodes/_base/components/workflow-panel/last-run/use-last-run.ts @@ -30,6 +30,7 @@ import { useNodesSyncDraft, } from '@/app/components/workflow/hooks' import useInspectVarsCrud from '@/app/components/workflow/hooks/use-inspect-vars-crud' +import { useInvalidLastRun } from '@/service/use-workflow' const singleRunFormParamsHooks: Record = { [BlockEnum.LLM]: useLLMSingleRunFormParams, @@ -126,6 +127,7 @@ const useLastRun = ({ }) const { + appId, hideSingleRun, handleRun: doCallRunApi, getInputVars, @@ -185,10 +187,14 @@ const useLastRun = ({ } const [tabType, setTabType] = useState(TabType.settings) + const invalidLastRun = useInvalidLastRun(appId!, id) + const handleRunWithParams = async (data: Record) => { setIsRunAfterSingleRun(true) setTabType(TabType.lastRun) - callRunApi(data) + callRunApi(data, () => { + invalidLastRun() + }) hideSingleRun() } @@ -259,6 +265,7 @@ const useLastRun = ({ callRunApi({}, async () => { setIsRunAfterSingleRun(true) setNodeRunning() + invalidLastRun() setTabType(TabType.lastRun) }) } diff --git a/web/app/components/workflow/nodes/_base/hooks/use-one-step-run.ts b/web/app/components/workflow/nodes/_base/hooks/use-one-step-run.ts index 648f0c70f2..851bc673e3 100644 --- a/web/app/components/workflow/nodes/_base/hooks/use-one-step-run.ts +++ b/web/app/components/workflow/nodes/_base/hooks/use-one-step-run.ts @@ -627,6 +627,7 @@ const useOneStepRun = ({ } return { + appId, isShowSingleRun, hideSingleRun, showSingleRun,