From f67c0710e1024d7b28b997b9c676ba63a5047d45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20G=C3=B3mez=20Morales?= Date: Mon, 21 Oct 2024 13:54:49 +0200 Subject: [PATCH] fix(editor): Fix Adding nodes one after the other also adds connections (no-changelog) (#11312) Co-authored-by: Alex Grozav --- .../src/components/canvas/WorkflowCanvas.vue | 1 + .../__tests__/useCanvasOperations.spec.ts | 22 +++++++++++++++++++ .../src/composables/useCanvasOperations.ts | 15 ++++++++----- packages/editor-ui/src/views/NodeView.v2.vue | 14 +++++++----- 4 files changed, 42 insertions(+), 10 deletions(-) diff --git a/packages/editor-ui/src/components/canvas/WorkflowCanvas.vue b/packages/editor-ui/src/components/canvas/WorkflowCanvas.vue index e90c64350a..d6097f3cb6 100644 --- a/packages/editor-ui/src/components/canvas/WorkflowCanvas.vue +++ b/packages/editor-ui/src/components/canvas/WorkflowCanvas.vue @@ -56,6 +56,7 @@ const { nodes: mappedNodes, connections: mappedConnections } = useCanvasMapping(
{ expect(setNodePositionByIdSpy).toHaveBeenCalledWith(nodes[1].id, expect.any(Object)); expect(setNodePositionByIdSpy).toHaveBeenCalledWith(nodes[2].id, expect.any(Object)); }); + + it('should return newly added nodes', async () => { + const workflowsStore = mockedStore(useWorkflowsStore); + const nodeTypesStore = useNodeTypesStore(); + const nodeTypeName = 'type'; + const nodes = [ + mockNode({ name: 'Node 1', type: nodeTypeName, position: [30, 40] }), + mockNode({ name: 'Node 2', type: nodeTypeName, position: [100, 240] }), + ]; + + workflowsStore.getCurrentWorkflow.mockReturnValue( + createTestWorkflowObject(workflowsStore.workflow), + ); + + nodeTypesStore.nodeTypes = { + [nodeTypeName]: { 1: mockNodeTypeDescription({ name: nodeTypeName }) }, + }; + + const { addNodes } = useCanvasOperations({ router }); + const added = await addNodes(nodes, {}); + expect(added.length).toBe(2); + }); }); describe('revertAddNode', () => { diff --git a/packages/editor-ui/src/composables/useCanvasOperations.ts b/packages/editor-ui/src/composables/useCanvasOperations.ts index d1f7259886..8b95b2c70e 100644 --- a/packages/editor-ui/src/composables/useCanvasOperations.ts +++ b/packages/editor-ui/src/composables/useCanvasOperations.ts @@ -494,6 +494,7 @@ export function useCanvasOperations({ router }: { router: ReturnType { const typeVersion = @@ -516,7 +517,7 @@ export function useCanvasOperations({ router }: { router: ReturnType { workflowsStore.setNodePristine(nodeData.name, true); @@ -613,10 +622,6 @@ export function useCanvasOperations({ router }: { router: ReturnType { @@ -886,9 +890,8 @@ async function onAddNodesAndConnections( addConnections(mappedConnections); - void nextTick(() => { - uiStore.resetLastInteractedWith(); - }); + uiStore.resetLastInteractedWith(); + selectNodes([addedNodes[addedNodes.length - 1].id]); } async function onRevertAddNode({ node }: { node: INodeUi }) { @@ -1565,6 +1568,7 @@ onBeforeUnmount(() => {