From 46a63c29aab62d7cf653575ea8e64c4ec8a64e19 Mon Sep 17 00:00:00 2001 From: bcakmakoglu <78412429+bcakmakoglu@users.noreply.github.com> Date: Tue, 8 Mar 2022 16:10:33 +0100 Subject: [PATCH] fix(store): updateEdge action not fully updating an edge Signed-off-by: bcakmakoglu <78412429+bcakmakoglu@users.noreply.github.com> --- src/store/actions.ts | 23 +++++++++++++++-------- src/types/store.ts | 2 +- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/store/actions.ts b/src/store/actions.ts index 7782de96..98bc5e4c 100644 --- a/src/store/actions.ts +++ b/src/store/actions.ts @@ -59,7 +59,7 @@ const addEdge = (edgeParams: Edge | Connection, edges: Edge[]) => { return edge } -const updateEdgeAction = (edge: GraphEdge, newConnection: Connection, edges: GraphEdge[]): GraphEdge | false => { +const updateEdgeAction = (edge: GraphEdge, newConnection: Connection, edges: GraphEdge[], add: Actions['addEdges']): boolean => { if (!newConnection.source || !newConnection.target) { console.warn("Can't create new edge. An edge needs a source and a target.") return false @@ -72,13 +72,19 @@ const updateEdgeAction = (edge: GraphEdge, newConnection: Connection, edges: Gra return false } - edge.id = getEdgeId(newConnection) - edge.source = newConnection.source - edge.target = newConnection.target - edge.sourceHandle = newConnection.sourceHandle - edge.targetHandle = newConnection.targetHandle + edges.splice(edges.indexOf(edge), 1) + add([ + { + ...edge, + id: getEdgeId(newConnection), + source: newConnection.source, + target: newConnection.target, + sourceHandle: newConnection.sourceHandle, + targetHandle: newConnection.targetHandle, + }, + ]) - return edge + return true } const applyEdgeChangesAction = (changes: EdgeChange[], edges: GraphEdge[]) => applyChanges(changes, edges) @@ -237,7 +243,8 @@ export default (state: State, getters: ComputedGetters): Actions => { }) } - const updateEdge: Actions['updateEdge'] = (oldEdge, newConnection) => updateEdgeAction(oldEdge, newConnection, state.edges) + const updateEdge: Actions['updateEdge'] = (oldEdge, newConnection) => + updateEdgeAction(oldEdge, newConnection, state.edges, addEdges) const applyNodeChanges: Actions['applyNodeChanges'] = (changes) => applyNodeChangesAction(changes, state.nodes) const applyEdgeChanges: Actions['applyEdgeChanges'] = (changes) => applyEdgeChangesAction(changes, state.edges) diff --git a/src/types/store.ts b/src/types/store.ts index ad63deb4..28a011ca 100644 --- a/src/types/store.ts +++ b/src/types/store.ts @@ -76,7 +76,7 @@ export interface Actions { setEdges: (edges: Edge[]) => void addNodes: (nodes: Node[], extent?: CoordinateExtent) => void addEdges: (edgesOrConnections: (Edge | Connection)[]) => void - updateEdge: (oldEdge: GraphEdge, newConnection: Connection) => GraphEdge | false + updateEdge: (oldEdge: GraphEdge, newConnection: Connection) => boolean applyEdgeChanges: (changes: EdgeChange[]) => GraphEdge[] applyNodeChanges: (changes: NodeChange[]) => GraphNode[] addSelectedElements: (elements: FlowElements) => void