| 1234567891011121314151617181920212223242526272829303132333435 |
- 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,
- }
- }
|