import { useCallback } from 'react' import { useStoreApi } from 'reactflow' import produce from 'immer' import type { LoopNextResponse } from '@/types/workflow' import { NodeRunningStatus } from '@/app/components/workflow/types' export const useWorkflowNodeLoopNext = () => { const store = useStoreApi() const handleWorkflowNodeLoopNext = useCallback((params: LoopNextResponse) => { const { data } = params const { getNodes, setNodes, } = store.getState() const nodes = getNodes() const newNodes = produce(nodes, (draft) => { const currentNode = draft.find(node => node.id === data.node_id)! currentNode.data._loopIndex = data.index draft.forEach((node) => { if (node.parentId === data.node_id) { node.data._waitingRun = true node.data._runningStatus = NodeRunningStatus.Waiting } }) }) setNodes(newNodes) }, [store]) return { handleWorkflowNodeLoopNext, } }