| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- import { useCallback } from 'react'
- import produce from 'immer'
- import { useStoreApi } from 'reactflow'
- import { NodeRunningStatus } from '../types'
-
- export const useNodesInteractionsWithoutSync = () => {
- const store = useStoreApi()
-
- const handleNodeCancelRunningStatus = useCallback(() => {
- const {
- getNodes,
- setNodes,
- } = store.getState()
-
- const nodes = getNodes()
- const newNodes = produce(nodes, (draft) => {
- draft.forEach((node) => {
- node.data._runningStatus = undefined
- node.data._waitingRun = false
- })
- })
- setNodes(newNodes)
- }, [store])
-
- const handleCancelAllNodeSuccessStatus = useCallback(() => {
- const {
- getNodes,
- setNodes,
- } = store.getState()
-
- const nodes = getNodes()
- const newNodes = produce(nodes, (draft) => {
- draft.forEach((node) => {
- if(node.data._runningStatus === NodeRunningStatus.Succeeded)
- node.data._runningStatus = undefined
- })
- })
- setNodes(newNodes)
- }, [store])
-
- const handleCancelNodeSuccessStatus = useCallback((nodeId: string) => {
- const {
- getNodes,
- setNodes,
- } = store.getState()
-
- const newNodes = produce(getNodes(), (draft) => {
- const node = draft.find(n => n.id === nodeId)
- if (node && node.data._runningStatus === NodeRunningStatus.Succeeded) {
- node.data._runningStatus = undefined
- node.data._waitingRun = false
- }
- })
- setNodes(newNodes)
- }, [store])
-
- return {
- handleNodeCancelRunningStatus,
- handleCancelAllNodeSuccessStatus,
- handleCancelNodeSuccessStatus,
- }
- }
|