From f922454ee8f516a6f0bface30f0535f870cea6ff Mon Sep 17 00:00:00 2001 From: Joel Date: Tue, 17 Jun 2025 17:39:53 +0800 Subject: [PATCH] fix: not check in top run button --- .../workflow-panel/last-run/use-last-run.ts | 7 ++++ .../nodes/_base/hooks/use-one-step-run.ts | 36 +++++++++++-------- 2 files changed, 29 insertions(+), 14 deletions(-) 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 59b8ee6509..0ebbd41b5f 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 @@ -142,6 +142,7 @@ const useLastRun = ({ iterationRunResult, loopRunResult, setNodeRunning, + checkValid, } = oneStepRunRes const { @@ -200,6 +201,9 @@ const useLastRun = ({ const invalidLastRun = useInvalidLastRun(appId!, id) const handleRunWithParams = async (data: Record) => { + const { isValid } = checkValid() + if(!isValid) + return setIsRunAfterSingleRun(true) setTabType(TabType.lastRun) callRunApi(data, () => { @@ -270,6 +274,9 @@ const useLastRun = ({ } const handleSingleRun = () => { + const { isValid } = checkValid() + if(!isValid) + return // no need to input params if (isAllVarsHasValue(singleRunParams?.getDependentVars?.())) { callRunApi({}, async () => { 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 851bc673e3..1878809ddf 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 @@ -152,6 +152,7 @@ const useOneStepRun = ({ } const checkValid = checkValidFns[data.type] + const appId = useAppStore.getState().appDetail?.id const [runInputData, setRunInputData] = useState>(defaultRunInputData || {}) const runInputDataRef = useRef(runInputData) @@ -216,6 +217,25 @@ const useOneStepRun = ({ }, }) } + const checkValidWrap = () => { + if(!checkValid) + return { isValid: true, errorMessage: '' } + const res = checkValid(data, t, moreDataForCheckValid) + if(!res.isValid) { + handleNodeDataUpdate({ + id, + data: { + ...data, + _isSingleRun: false, + }, + }) + Toast.notify({ + type: 'error', + message: res.errorMessage, + }) + } + return res + } const [canShowSingleRun, setCanShowSingleRun] = useState(false) const isShowSingleRun = data._isSingleRun && canShowSingleRun const [iterationRunResult, setIterationRunResult] = useState([]) @@ -228,21 +248,8 @@ const useOneStepRun = ({ } if (data._isSingleRun) { - const { isValid, errorMessage } = checkValid(data, t, moreDataForCheckValid) + const { isValid } = checkValidWrap() setCanShowSingleRun(isValid) - if (!isValid) { - handleNodeDataUpdate({ - id, - data: { - ...data, - _isSingleRun: false, - }, - }) - Toast.notify({ - type: 'error', - message: errorMessage, - }) - } } // eslint-disable-next-line react-hooks/exhaustive-deps }, [data._isSingleRun]) @@ -645,6 +652,7 @@ const useOneStepRun = ({ iterationRunResult, loopRunResult, setNodeRunning, + checkValid: checkValidWrap, } }