dify/web/app/components/workflow/hooks/use-inspect-vars-crud.ts

74 lines
3.2 KiB
TypeScript
Raw Normal View History

import { useStore } from '../store'
import { useHooksStore } from '@/app/components/workflow/hooks-store'
import {
useConversationVarValues,
useSysVarValues,
} from '@/service/use-workflow'
import { FlowType } from '@/types/common'
import { produce } from 'immer'
import { BlockEnum } from '../types'
const varsAppendStartNodeKeys = ['query', 'files']
const useInspectVarsCrud = () => {
const partOfNodesWithInspectVars = useStore(s => s.nodesWithInspectVars)
const configsMap = useHooksStore(s => s.configsMap)
const isRagPipeline = configsMap?.flowType === FlowType.ragPipeline
const { data: conversationVars } = useConversationVarValues(configsMap?.flowType, !isRagPipeline ? configsMap?.flowId : '')
const { data: allSystemVars } = useSysVarValues(configsMap?.flowType, !isRagPipeline ? configsMap?.flowId : '')
const { varsAppendStartNode, systemVars } = (() => {
if(allSystemVars?.length === 0)
return { varsAppendStartNode: [], systemVars: [] }
const varsAppendStartNode = allSystemVars?.filter(({ name }) => varsAppendStartNodeKeys.includes(name)) || []
const systemVars = allSystemVars?.filter(({ name }) => !varsAppendStartNodeKeys.includes(name)) || []
return { varsAppendStartNode, systemVars }
})()
const nodesWithInspectVars = (() => {
if(!partOfNodesWithInspectVars || partOfNodesWithInspectVars.length === 0)
return []
const nodesWithInspectVars = produce(partOfNodesWithInspectVars, (draft) => {
draft.forEach((nodeWithVars) => {
if(nodeWithVars.nodeType === BlockEnum.Start)
nodeWithVars.vars = [...nodeWithVars.vars, ...varsAppendStartNode]
})
})
return nodesWithInspectVars
})()
const hasNodeInspectVars = useHooksStore(s => s.hasNodeInspectVars)
const hasSetInspectVar = useHooksStore(s => s.hasSetInspectVar)
const fetchInspectVarValue = useHooksStore(s => s.fetchInspectVarValue)
const editInspectVarValue = useHooksStore(s => s.editInspectVarValue)
const renameInspectVarName = useHooksStore(s => s.renameInspectVarName)
const appendNodeInspectVars = useHooksStore(s => s.appendNodeInspectVars)
const deleteInspectVar = useHooksStore(s => s.deleteInspectVar)
const deleteNodeInspectorVars = useHooksStore(s => s.deleteNodeInspectorVars)
const deleteAllInspectorVars = useHooksStore(s => s.deleteAllInspectorVars)
const isInspectVarEdited = useHooksStore(s => s.isInspectVarEdited)
const resetToLastRunVar = useHooksStore(s => s.resetToLastRunVar)
const invalidateSysVarValues = useHooksStore(s => s.invalidateSysVarValues)
const resetConversationVar = useHooksStore(s => s.resetConversationVar)
const invalidateConversationVarValues = useHooksStore(s => s.invalidateConversationVarValues)
return {
conversationVars: conversationVars || [],
systemVars: systemVars || [],
nodesWithInspectVars,
hasNodeInspectVars,
hasSetInspectVar,
fetchInspectVarValue,
editInspectVarValue,
renameInspectVarName,
appendNodeInspectVars,
deleteInspectVar,
deleteNodeInspectorVars,
deleteAllInspectorVars,
isInspectVarEdited,
resetToLastRunVar,
invalidateSysVarValues,
resetConversationVar,
invalidateConversationVarValues,
}
}
export default useInspectVarsCrud