mirror of
				https://github.com/langgenius/dify.git
				synced 2025-10-26 00:18:44 +00:00 
			
		
		
		
	 1a1bfd4048
			
		
	
	
		1a1bfd4048
		
			
		
	
	
	
	
		
			
			The frontend of feat: Persist Variables for Enhanced Debugging Workflow (#20699). Co-authored-by: jZonG <jzongcode@gmail.com>
		
			
				
	
	
		
			63 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 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,
 | |
|   }
 | |
| }
 |