fix(canvas): ensure valid source and target node IDs when creating synthetic edges
This commit is contained in:
@@ -376,11 +376,14 @@ function CanvasInner({ canvasId }: CanvasInnerProps) {
|
|||||||
zIndex: args.zIndex,
|
zIndex: args.zIndex,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const sourceNode = nodeList.find((node) => node._id === args.sourceNodeId);
|
||||||
|
if (!sourceNode) return;
|
||||||
|
|
||||||
const syntheticEdge: Doc<"edges"> = {
|
const syntheticEdge: Doc<"edges"> = {
|
||||||
_id: tempEdgeId,
|
_id: tempEdgeId,
|
||||||
_creationTime: Date.now(),
|
_creationTime: Date.now(),
|
||||||
canvasId: args.canvasId,
|
canvasId: args.canvasId,
|
||||||
sourceNodeId: args.sourceNodeId as Id<"nodes">,
|
sourceNodeId: sourceNode._id,
|
||||||
targetNodeId: tempNodeId,
|
targetNodeId: tempNodeId,
|
||||||
sourceHandle: args.sourceHandle,
|
sourceHandle: args.sourceHandle,
|
||||||
targetHandle: args.targetHandle,
|
targetHandle: args.targetHandle,
|
||||||
@@ -435,12 +438,15 @@ function CanvasInner({ canvasId }: CanvasInnerProps) {
|
|||||||
zIndex: args.zIndex,
|
zIndex: args.zIndex,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const targetNode = nodeList.find((node) => node._id === args.targetNodeId);
|
||||||
|
if (!targetNode) return;
|
||||||
|
|
||||||
const syntheticEdge: Doc<"edges"> = {
|
const syntheticEdge: Doc<"edges"> = {
|
||||||
_id: tempEdgeId,
|
_id: tempEdgeId,
|
||||||
_creationTime: Date.now(),
|
_creationTime: Date.now(),
|
||||||
canvasId: args.canvasId,
|
canvasId: args.canvasId,
|
||||||
sourceNodeId: tempNodeId,
|
sourceNodeId: tempNodeId,
|
||||||
targetNodeId: args.targetNodeId as Id<"nodes">,
|
targetNodeId: targetNode._id,
|
||||||
sourceHandle: args.sourceHandle,
|
sourceHandle: args.sourceHandle,
|
||||||
targetHandle: args.targetHandle,
|
targetHandle: args.targetHandle,
|
||||||
};
|
};
|
||||||
@@ -462,7 +468,14 @@ function CanvasInner({ canvasId }: CanvasInnerProps) {
|
|||||||
const edgeList = localStore.getQuery(api.edges.list, {
|
const edgeList = localStore.getQuery(api.edges.list, {
|
||||||
canvasId: args.canvasId,
|
canvasId: args.canvasId,
|
||||||
});
|
});
|
||||||
if (edgeList === undefined) return;
|
const nodeList = localStore.getQuery(api.nodes.list, {
|
||||||
|
canvasId: args.canvasId,
|
||||||
|
});
|
||||||
|
if (edgeList === undefined || nodeList === undefined) return;
|
||||||
|
|
||||||
|
const sourceNode = nodeList.find((node) => node._id === args.sourceNodeId);
|
||||||
|
const targetNode = nodeList.find((node) => node._id === args.targetNodeId);
|
||||||
|
if (!sourceNode || !targetNode) return;
|
||||||
|
|
||||||
const tempId = (
|
const tempId = (
|
||||||
args.clientRequestId
|
args.clientRequestId
|
||||||
@@ -473,8 +486,8 @@ function CanvasInner({ canvasId }: CanvasInnerProps) {
|
|||||||
_id: tempId,
|
_id: tempId,
|
||||||
_creationTime: Date.now(),
|
_creationTime: Date.now(),
|
||||||
canvasId: args.canvasId,
|
canvasId: args.canvasId,
|
||||||
sourceNodeId: args.sourceNodeId,
|
sourceNodeId: sourceNode._id,
|
||||||
targetNodeId: args.targetNodeId,
|
targetNodeId: targetNode._id,
|
||||||
sourceHandle: args.sourceHandle,
|
sourceHandle: args.sourceHandle,
|
||||||
targetHandle: args.targetHandle,
|
targetHandle: args.targetHandle,
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user