diff --git a/web/app/components/workflow/hooks/use-edges-interactions.ts b/web/app/components/workflow/hooks/use-edges-interactions.ts index 306af1e96c..af44a8198d 100644 --- a/web/app/components/workflow/hooks/use-edges-interactions.ts +++ b/web/app/components/workflow/hooks/use-edges-interactions.ts @@ -4,9 +4,7 @@ import type { EdgeMouseHandler, OnEdgesChange, } from 'reactflow' -import { - useStoreApi, -} from 'reactflow' + import type { Node, } from '../types' @@ -14,61 +12,55 @@ import { getNodesConnectedSourceOrTargetHandleIdsMap } from '../utils' import { useNodesSyncDraft } from './use-nodes-sync-draft' import { useNodesReadOnly } from './use-workflow' import { WorkflowHistoryEvent, useWorkflowHistory } from './use-workflow-history' +import { useCollaborativeWorkflow } from './use-collaborative-workflow' export const useEdgesInteractions = () => { - const store = useStoreApi() const { handleSyncWorkflowDraft } = useNodesSyncDraft() const { getNodesReadOnly } = useNodesReadOnly() const { saveStateToHistory } = useWorkflowHistory() + const collaborativeWorkflow = useCollaborativeWorkflow() const handleEdgeEnter = useCallback((_, edge) => { if (getNodesReadOnly()) return - const { - edges, - setEdges, - } = store.getState() + const { edges, setEdges } = collaborativeWorkflow.getState() const newEdges = produce(edges, (draft) => { const currentEdge = draft.find(e => e.id === edge.id)! currentEdge.data._hovering = true }) - setEdges(newEdges) - }, [store, getNodesReadOnly]) + setEdges(newEdges, false) + }, [collaborativeWorkflow, getNodesReadOnly]) const handleEdgeLeave = useCallback((_, edge) => { if (getNodesReadOnly()) return - const { - edges, - setEdges, - } = store.getState() + const { edges, setEdges } = collaborativeWorkflow.getState() const newEdges = produce(edges, (draft) => { const currentEdge = draft.find(e => e.id === edge.id)! currentEdge.data._hovering = false }) - setEdges(newEdges) - }, [store, getNodesReadOnly]) + setEdges(newEdges, false) + }, [collaborativeWorkflow, getNodesReadOnly]) const handleEdgeDeleteByDeleteBranch = useCallback((nodeId: string, branchId: string) => { if (getNodesReadOnly()) return const { - getNodes, + nodes, setNodes, edges, setEdges, - } = store.getState() + } = collaborativeWorkflow.getState() const edgeWillBeDeleted = edges.filter(edge => edge.source === nodeId && edge.sourceHandle === branchId) if (!edgeWillBeDeleted.length) return - const nodes = getNodes() const nodesConnectedSourceOrTargetHandleIdsMap = getNodesConnectedSourceOrTargetHandleIdsMap( edgeWillBeDeleted.map(edge => ({ type: 'remove', edge })), nodes, @@ -90,24 +82,23 @@ export const useEdgesInteractions = () => { setEdges(newEdges) handleSyncWorkflowDraft() saveStateToHistory(WorkflowHistoryEvent.EdgeDeleteByDeleteBranch) - }, [getNodesReadOnly, store, handleSyncWorkflowDraft, saveStateToHistory]) + }, [getNodesReadOnly, collaborativeWorkflow, handleSyncWorkflowDraft, saveStateToHistory]) const handleEdgeDelete = useCallback(() => { if (getNodesReadOnly()) return const { - getNodes, + nodes, setNodes, edges, setEdges, - } = store.getState() + } = collaborativeWorkflow.getState() const currentEdgeIndex = edges.findIndex(edge => edge.selected) if (currentEdgeIndex < 0) return const currentEdge = edges[currentEdgeIndex] - const nodes = getNodes() const nodesConnectedSourceOrTargetHandleIdsMap = getNodesConnectedSourceOrTargetHandleIdsMap( [ { type: 'remove', edge: currentEdge }, @@ -131,7 +122,7 @@ export const useEdgesInteractions = () => { setEdges(newEdges) handleSyncWorkflowDraft() saveStateToHistory(WorkflowHistoryEvent.EdgeDelete) - }, [getNodesReadOnly, store, handleSyncWorkflowDraft, saveStateToHistory]) + }, [getNodesReadOnly, collaborativeWorkflow, handleSyncWorkflowDraft, saveStateToHistory]) const handleEdgesChange = useCallback((changes) => { if (getNodesReadOnly()) @@ -140,7 +131,7 @@ export const useEdgesInteractions = () => { const { edges, setEdges, - } = store.getState() + } = collaborativeWorkflow.getState() const newEdges = produce(edges, (draft) => { changes.forEach((change) => { @@ -149,7 +140,7 @@ export const useEdgesInteractions = () => { }) }) setEdges(newEdges) - }, [store, getNodesReadOnly]) + }, [collaborativeWorkflow, getNodesReadOnly]) return { handleEdgeEnter, diff --git a/web/app/components/workflow/hooks/use-nodes-interactions.ts b/web/app/components/workflow/hooks/use-nodes-interactions.ts index 444d03d979..854d54b110 100644 --- a/web/app/components/workflow/hooks/use-nodes-interactions.ts +++ b/web/app/components/workflow/hooks/use-nodes-interactions.ts @@ -14,7 +14,6 @@ import { getConnectedEdges, getOutgoers, useReactFlow, - useStoreApi, } from 'reactflow' import { unionBy } from 'lodash-es' import type { ToolDefaultValue } from '../block-selector/types' @@ -65,7 +64,6 @@ import { useCollaborativeWorkflow } from './use-collaborative-workflow' export const useNodesInteractions = () => { const { t } = useTranslation() - const store = useStoreApi() const collaborativeWorkflow = useCollaborativeWorkflow() const workflowStore = useWorkflowStore() const reactflow = useReactFlow() @@ -151,7 +149,7 @@ export const useNodesInteractions = () => { currentNode.position.y = node.position.y }) setNodes(newNodes) - }, [getNodesReadOnly, store, handleNodeIterationChildDrag, handleNodeLoopChildDrag, handleSetHelpline]) + }, [getNodesReadOnly, collaborativeWorkflow, handleNodeIterationChildDrag, handleNodeLoopChildDrag, handleSetHelpline]) const handleNodeDragStop = useCallback((_, node) => { const { @@ -244,7 +242,7 @@ export const useNodesInteractions = () => { }) setNodes(newNodes, false) } - }, [store, workflowStore, getNodesReadOnly]) + }, [collaborativeWorkflow, workflowStore, getNodesReadOnly]) const handleNodeLeave = useCallback((_, node) => { if (getNodesReadOnly()) @@ -276,7 +274,7 @@ export const useNodesInteractions = () => { }) }) setEdges(newEdges, false) - }, [store, workflowStore, getNodesReadOnly]) + }, [collaborativeWorkflow, workflowStore, getNodesReadOnly]) const handleNodeSelect = useCallback((nodeId: string, cancelSelection?: boolean, initShowLastRunTab?: boolean) => { if(initShowLastRunTab) @@ -318,7 +316,7 @@ export const useNodesInteractions = () => { setEdges(newEdges) handleSyncWorkflowDraft() - }, [store, handleSyncWorkflowDraft]) + }, [collaborativeWorkflow, handleSyncWorkflowDraft]) const handleNodeClick = useCallback((_, node) => { if (node.type === CUSTOM_ITERATION_START_NODE) @@ -408,7 +406,7 @@ export const useNodesInteractions = () => { setConnectingNodePayload(undefined) setEnteringNodePayload(undefined) } - }, [getNodesReadOnly, store, workflowStore, handleSyncWorkflowDraft, saveStateToHistory, checkNestedParallelLimit]) + }, [getNodesReadOnly, collaborativeWorkflow, workflowStore, handleSyncWorkflowDraft, saveStateToHistory, checkNestedParallelLimit]) const handleNodeConnectStart = useCallback((_, { nodeId, handleType, handleId }) => { if (getNodesReadOnly()) @@ -434,7 +432,7 @@ export const useNodesInteractions = () => { handleId, }) } - }, [store, workflowStore, getNodesReadOnly]) + }, [collaborativeWorkflow, workflowStore, getNodesReadOnly]) const handleNodeConnectEnd = useCallback((e: any) => { if (getNodesReadOnly()) @@ -504,7 +502,7 @@ export const useNodesInteractions = () => { } setConnectingNodePayload(undefined) setEnteringNodePayload(undefined) - }, [store, handleNodeConnect, getNodesReadOnly, workflowStore, reactflow]) + }, [collaborativeWorkflow, handleNodeConnect, getNodesReadOnly, workflowStore, reactflow]) const { deleteNodeInspectorVars } = useInspectVarsCrud() @@ -627,7 +625,7 @@ export const useNodesInteractions = () => { else saveStateToHistory(WorkflowHistoryEvent.NodeDelete) - }, [getNodesReadOnly, store, deleteNodeInspectorVars, handleSyncWorkflowDraft, saveStateToHistory, workflowStore, t]) + }, [getNodesReadOnly, collaborativeWorkflow, deleteNodeInspectorVars, handleSyncWorkflowDraft, saveStateToHistory, workflowStore, t]) const handleNodeAdd = useCallback(( { @@ -1059,7 +1057,7 @@ export const useNodesInteractions = () => { } handleSyncWorkflowDraft() saveStateToHistory(WorkflowHistoryEvent.NodeAdd) - }, [getNodesReadOnly, store, t, handleSyncWorkflowDraft, saveStateToHistory, workflowStore, getAfterNodesInSameBranch, checkNestedParallelLimit]) + }, [getNodesReadOnly, collaborativeWorkflow, t, handleSyncWorkflowDraft, saveStateToHistory, workflowStore, getAfterNodesInSameBranch, checkNestedParallelLimit]) const handleNodeChange = useCallback(( currentNodeId: string, @@ -1135,7 +1133,7 @@ export const useNodesInteractions = () => { handleSyncWorkflowDraft() saveStateToHistory(WorkflowHistoryEvent.NodeChange) - }, [getNodesReadOnly, store, t, handleSyncWorkflowDraft, saveStateToHistory]) + }, [getNodesReadOnly, collaborativeWorkflow, t, handleSyncWorkflowDraft, saveStateToHistory]) const handleNodesCancelSelected = useCallback(() => { const { nodes, setNodes } = collaborativeWorkflow.getState() @@ -1145,7 +1143,7 @@ export const useNodesInteractions = () => { }) }) setNodes(newNodes) - }, [store]) + }, [collaborativeWorkflow]) const handleNodeContextMenu = useCallback((e: MouseEvent, node: Node) => { if (node.type === CUSTOM_NOTE_NODE || node.type === CUSTOM_ITERATION_START_NODE) @@ -1197,7 +1195,7 @@ export const useNodesInteractions = () => { if (selectedNode) setClipboardElements([selectedNode]) } - }, [getNodesReadOnly, store, workflowStore]) + }, [getNodesReadOnly, collaborativeWorkflow, workflowStore]) const handleNodesPaste = useCallback(() => { if (getNodesReadOnly()) @@ -1306,7 +1304,7 @@ export const useNodesInteractions = () => { saveStateToHistory(WorkflowHistoryEvent.NodePaste) handleSyncWorkflowDraft() } - }, [getNodesReadOnly, workflowStore, store, reactflow, saveStateToHistory, handleSyncWorkflowDraft, handleNodeIterationChildrenCopy, handleNodeLoopChildrenCopy]) + }, [getNodesReadOnly, workflowStore, collaborativeWorkflow, reactflow, saveStateToHistory, handleSyncWorkflowDraft, handleNodeIterationChildrenCopy, handleNodeLoopChildrenCopy]) const handleNodesDuplicate = useCallback((nodeId?: string) => { if (getNodesReadOnly()) @@ -1338,7 +1336,7 @@ export const useNodesInteractions = () => { if (selectedNode) handleNodeDelete(selectedNode.id) - }, [store, getNodesReadOnly, handleNodeDelete]) + }, [collaborativeWorkflow, getNodesReadOnly, handleNodeDelete]) const handleNodeResize = useCallback((nodeId: string, params: ResizeParamsWithDirection) => { if (getNodesReadOnly()) @@ -1393,7 +1391,7 @@ export const useNodesInteractions = () => { setNodes(newNodes) handleSyncWorkflowDraft() saveStateToHistory(WorkflowHistoryEvent.NodeResize) - }, [getNodesReadOnly, store, handleSyncWorkflowDraft, saveStateToHistory]) + }, [getNodesReadOnly, collaborativeWorkflow, handleSyncWorkflowDraft, saveStateToHistory]) const handleNodeDisconnect = useCallback((nodeId: string) => { if (getNodesReadOnly()) @@ -1423,7 +1421,7 @@ export const useNodesInteractions = () => { setEdges(newEdges) handleSyncWorkflowDraft() saveStateToHistory(WorkflowHistoryEvent.EdgeDelete) - }, [store, getNodesReadOnly, handleSyncWorkflowDraft, saveStateToHistory]) + }, [collaborativeWorkflow, getNodesReadOnly, handleSyncWorkflowDraft, saveStateToHistory]) const handleHistoryBack = useCallback(() => { if (getNodesReadOnly() || getWorkflowReadOnly()) @@ -1438,7 +1436,7 @@ export const useNodesInteractions = () => { setEdges(edges) setNodes(nodes) - }, [store, undo, workflowHistoryStore, getNodesReadOnly, getWorkflowReadOnly]) + }, [collaborativeWorkflow, undo, workflowHistoryStore, getNodesReadOnly, getWorkflowReadOnly]) const handleHistoryForward = useCallback(() => { if (getNodesReadOnly() || getWorkflowReadOnly()) @@ -1453,7 +1451,7 @@ export const useNodesInteractions = () => { setEdges(edges) setNodes(nodes) - }, [redo, store, workflowHistoryStore, getNodesReadOnly, getWorkflowReadOnly]) + }, [redo, collaborativeWorkflow, workflowHistoryStore, getNodesReadOnly, getWorkflowReadOnly]) return { handleNodeDragStart,