From 5c11c223023c7d593f38e3fe3e3af73926035288 Mon Sep 17 00:00:00 2001 From: Joel Date: Tue, 1 Jul 2025 16:00:17 +0800 Subject: [PATCH] fix: can not reset system variables (#21750) --- .../workflow/hooks/use-inspect-vars-crud.ts | 24 +++++++------------ web/service/use-workflow.ts | 2 +- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/web/app/components/workflow/hooks/use-inspect-vars-crud.ts b/web/app/components/workflow/hooks/use-inspect-vars-crud.ts index 59cc98a17..e81d3b13a 100644 --- a/web/app/components/workflow/hooks/use-inspect-vars-crud.ts +++ b/web/app/components/workflow/hooks/use-inspect-vars-crud.ts @@ -11,12 +11,11 @@ import { useEditInspectorVar, useInvalidateConversationVarValues, useInvalidateSysVarValues, - useLastRun, useResetConversationVar, useResetToLastRunValue, useSysVarValues, } from '@/service/use-workflow' -import { useCallback, useEffect, useState } from 'react' +import { useCallback } from 'react' import { isConversationVar, isENV, isSystemVar } from '../nodes/_base/components/variable/utils' import produce from 'immer' import type { Node } from '@/app/components/workflow/types' @@ -123,6 +122,7 @@ const useInspectVarsCrud = () => { nodeType: nodeInfo.data.type, title: nodeInfo.data.title, vars: payload, + nodePayload: nodeInfo.data, }) } else { @@ -180,16 +180,6 @@ const useInspectVarsCrud = () => { invalidateSysVarValues() }, [doEditInspectorVar, invalidateConversationVarValues, invalidateSysVarValues, setInspectVarValue]) - const [currNodeId, setCurrNodeId] = useState(null) - const [currEditVarId, setCurrEditVarId] = useState(null) - const { data } = useLastRun(appId, currNodeId || '', !!currNodeId) - useEffect(() => { - if (data && currNodeId && currEditVarId) { - const inspectVar = getNodeInspectVars(currNodeId)?.vars?.find(item => item.id === currEditVarId) - resetToLastRunVarInStore(currNodeId, currEditVarId, data.outputs?.[inspectVar?.selector?.[1] || '']) - } - }, [data, currNodeId, currEditVarId, getNodeInspectVars, editInspectVarValue, resetToLastRunVarInStore]) - const renameInspectVarName = async (nodeId: string, oldName: string, newName: string) => { const varId = getVarId(nodeId, oldName) if (!varId) @@ -212,9 +202,13 @@ const useInspectVarsCrud = () => { }, [getInspectVar]) const resetToLastRunVar = async (nodeId: string, varId: string) => { - await doResetToLastRunValue(varId) - setCurrNodeId(nodeId) - setCurrEditVarId(varId) + const isSysVar = nodeId === 'sys' + const data = await doResetToLastRunValue(varId) + + if(isSysVar) + invalidateSysVarValues() + else + resetToLastRunVarInStore(nodeId, varId, data.value) } return { diff --git a/web/service/use-workflow.ts b/web/service/use-workflow.ts index e070b46e6..d9b3332ce 100644 --- a/web/service/use-workflow.ts +++ b/web/service/use-workflow.ts @@ -139,7 +139,7 @@ export const useResetConversationVar = (appId: string) => { export const useResetToLastRunValue = (appId: string) => { return useMutation({ mutationKey: [NAME_SPACE, 'reset to last run value', appId], - mutationFn: async (varId: string) => { + mutationFn: async (varId: string): Promise<{ value: any }> => { return put(`apps/${appId}/workflows/draft/variables/${varId}/reset`) }, })