feat: reset to last run value

pull/21369/head
Joel 12 months ago
parent c2f2e8ca86
commit 963ada5c00

@ -13,6 +13,7 @@ import {
useInvalidateSysVarValues, useInvalidateSysVarValues,
useLastRun, useLastRun,
useResetConversationVar, useResetConversationVar,
useResetToLastRunValue,
useSysVarValues, useSysVarValues,
} from '@/service/use-workflow' } from '@/service/use-workflow'
import { useCallback, useEffect, useState } from 'react' import { useCallback, useEffect, useState } from 'react'
@ -34,11 +35,13 @@ const useInspectVarsCrud = () => {
deleteNodeInspectVars: deleteNodeInspectVarsInStore, deleteNodeInspectVars: deleteNodeInspectVarsInStore,
deleteInspectVar: deleteInspectVarInStore, deleteInspectVar: deleteInspectVarInStore,
setNodesWithInspectVars, setNodesWithInspectVars,
resetToLastRunVar: resetToLastRunVarInStore,
} = workflowStore.getState() } = workflowStore.getState()
const { data: conversationVars } = useConversationVarValues(appId) const { data: conversationVars } = useConversationVarValues(appId)
const invalidateConversationVarValues = useInvalidateConversationVarValues(appId) const invalidateConversationVarValues = useInvalidateConversationVarValues(appId)
const { mutateAsync: doResetConversationVar } = useResetConversationVar(appId) const { mutateAsync: doResetConversationVar } = useResetConversationVar(appId)
const { mutateAsync: doResetToLastRunValue } = useResetToLastRunValue(appId)
const { data: systemVars } = useSysVarValues(appId) const { data: systemVars } = useSysVarValues(appId)
const invalidateSysVarValues = useInvalidateSysVarValues(appId) const invalidateSysVarValues = useInvalidateSysVarValues(appId)
@ -186,13 +189,10 @@ const useInspectVarsCrud = () => {
const { data } = useLastRun(appId, currNodeId || '', !!currNodeId) const { data } = useLastRun(appId, currNodeId || '', !!currNodeId)
useEffect(() => { useEffect(() => {
if (data && currNodeId && currEditVarId) { if (data && currNodeId && currEditVarId) {
const inspectVar = getNodeInspectVars(currNodeId)?.vars?.find(item => item.id === currEditVarId); const inspectVar = getNodeInspectVars(currNodeId)?.vars?.find(item => item.id === currEditVarId)
(async () => { resetToLastRunVarInStore(currNodeId, currEditVarId, data.outputs?.[inspectVar?.selector?.[1] || ''])
await editInspectVarValue(currNodeId, currEditVarId, data.outputs?.[inspectVar?.selector?.[1] || ''])
setCurrNodeId(null)
})()
} }
}, [data, currNodeId, currEditVarId, getNodeInspectVars, editInspectVarValue]) }, [data, currNodeId, currEditVarId, getNodeInspectVars, editInspectVarValue, resetToLastRunVarInStore])
const renameInspectVarName = async (nodeId: string, oldName: string, newName: string) => { const renameInspectVarName = async (nodeId: string, oldName: string, newName: string) => {
const varId = getVarId(nodeId, oldName) const varId = getVarId(nodeId, oldName)
@ -215,7 +215,8 @@ const useInspectVarsCrud = () => {
return inspectVar.edited return inspectVar.edited
}, [getInspectVar]) }, [getInspectVar])
const resetToLastRunVar = (nodeId: string, varId: string) => { const resetToLastRunVar = async (nodeId: string, varId: string) => {
await doResetToLastRunValue(varId)
setCurrNodeId(nodeId) setCurrNodeId(nodeId)
setCurrEditVarId(varId) setCurrEditVarId(varId)
} }

@ -16,6 +16,7 @@ type InspectVarsActions = {
setNodeInspectVars: (nodeId: string, payload: VarInInspect[]) => void setNodeInspectVars: (nodeId: string, payload: VarInInspect[]) => void
deleteNodeInspectVars: (nodeId: string) => void deleteNodeInspectVars: (nodeId: string) => void
setInspectVarValue: (nodeId: string, name: string, value: any) => void setInspectVarValue: (nodeId: string, name: string, value: any) => void
resetToLastRunVar: (nodeId: string, varId: string, value: any) => void
renameInspectVarName: (nodeId: string, varId: string, selector: ValueSelector) => void renameInspectVarName: (nodeId: string, varId: string, selector: ValueSelector) => void
deleteInspectVar: (nodeId: string, varId: string) => void deleteInspectVar: (nodeId: string, varId: string) => void
} }
@ -85,6 +86,24 @@ export const createInspectVarsSlice: StateCreator<InspectVarsSliceShape> = (set,
} }
}) })
}, },
resetToLastRunVar: (nodeId, varId, value) => {
set((state: InspectVarsSliceShape) => {
const nodes = produce(state.nodesWithInspectVars, (draft) => {
const targetNode = draft.find(node => node.nodeId === nodeId)
if (!targetNode)
return
const targetVar = targetNode.vars.find(varItem => varItem.id === varId)
if(!targetVar)
return
targetVar.value = value
targetVar.edited = false
},
)
return {
nodesWithInspectVars: nodes,
}
})
},
renameInspectVarName: (nodeId, varId, selector) => { renameInspectVarName: (nodeId, varId, selector) => {
set((state: InspectVarsSliceShape) => { set((state: InspectVarsSliceShape) => {
const nodes = produce(state.nodesWithInspectVars, (draft) => { const nodes = produce(state.nodesWithInspectVars, (draft) => {

@ -136,6 +136,15 @@ 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) => {
return put(`apps/${appId}/workflows/draft/variables/${varId}/reset`)
},
})
}
export const useSysVarValuesKey = [NAME_SPACE, 'sys-variable'] export const useSysVarValuesKey = [NAME_SPACE, 'sys-variable']
export const useSysVarValues = (appId: string) => { export const useSysVarValues = (appId: string) => {
return useQuery({ return useQuery({

Loading…
Cancel
Save