diff --git a/web/app/components/workflow/hooks/use-collaborative-workflow.ts b/web/app/components/workflow/hooks/use-collaborative-workflow.ts index 40fe310cad..ddf7c08f31 100644 --- a/web/app/components/workflow/hooks/use-collaborative-workflow.ts +++ b/web/app/components/workflow/hooks/use-collaborative-workflow.ts @@ -7,16 +7,20 @@ export const useCollaborativeWorkflow = () => { const store = useStoreApi() const { setNodes: collabSetNodes, setEdges: collabSetEdges } = collaborationManager - const setNodes = useCallback((newNodes: Node[]) => { + const setNodes = useCallback((newNodes: Node[], shouldBroadcast: boolean = true) => { const { getNodes, setNodes: reactFlowSetNodes } = store.getState() - const oldNodes = getNodes() - collabSetNodes(oldNodes, newNodes) + if (shouldBroadcast) { + const oldNodes = getNodes() + collabSetNodes(oldNodes, newNodes) + } reactFlowSetNodes(newNodes) }, [store, collabSetNodes]) - const setEdges = useCallback((newEdges: Edge[]) => { + const setEdges = useCallback((newEdges: Edge[], shouldBroadcast: boolean = true) => { const { edges, setEdges: reactFlowSetEdges } = store.getState() - collabSetEdges(edges, newEdges) + if (shouldBroadcast) + collabSetEdges(edges, newEdges) + reactFlowSetEdges(newEdges) }, [store, collabSetEdges]) diff --git a/web/app/components/workflow/hooks/use-nodes-interactions.ts b/web/app/components/workflow/hooks/use-nodes-interactions.ts index 7a3009ebe8..444d03d979 100644 --- a/web/app/components/workflow/hooks/use-nodes-interactions.ts +++ b/web/app/components/workflow/hooks/use-nodes-interactions.ts @@ -214,7 +214,7 @@ export const useNodesInteractions = () => { n.data._isEntering = true }) }) - setNodes(newNodes) + setNodes(newNodes, false) } } const newEdges = produce(edges, (draft) => { @@ -226,7 +226,7 @@ export const useNodesInteractions = () => { currentEdge.data._connectedNodeIsHovering = true }) }) - setEdges(newEdges) + setEdges(newEdges, false) const connectedEdges = getConnectedEdges([node], edges).filter(edge => edge.target === node.id) const targetNodes: Node[] = [] @@ -242,7 +242,7 @@ export const useNodesInteractions = () => { n.data._inParallelHovering = true }) }) - setNodes(newNodes) + setNodes(newNodes, false) } }, [store, workflowStore, getNodesReadOnly]) @@ -268,14 +268,14 @@ export const useNodesInteractions = () => { node.data._inParallelHovering = false }) }) - setNodes(newNodes) + setNodes(newNodes, false) const newEdges = produce(edges, (draft) => { draft.forEach((edge) => { if (edge.data) edge.data._connectedNodeIsHovering = false }) }) - setEdges(newEdges) + setEdges(newEdges, false) }, [store, workflowStore, getNodesReadOnly]) const handleNodeSelect = useCallback((nodeId: string, cancelSelection?: boolean, initShowLastRunTab?: boolean) => { @@ -483,7 +483,7 @@ export const useNodesInteractions = () => { } }) }) - setNodes(newNodes) + setNodes(newNodes, false) setShowAssignVariablePopup({ nodeId: fromNode.id, nodeData: fromNode.data,