Skip to content

Commit a8fb76b

Browse files
committed
fix missing handler
1 parent e1036e3 commit a8fb76b

File tree

1 file changed

+68
-39
lines changed

1 file changed

+68
-39
lines changed

apps/sim/hooks/use-undo-redo.ts

Lines changed: 68 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -492,50 +492,53 @@ export function useUndoRedo() {
492492
break
493493
}
494494
case 'batch-remove-edges': {
495+
// Undo add-edge: inverse is batch-remove-edges, so remove the edges
495496
const batchRemoveInverse = entry.inverse as BatchRemoveEdgesOperation
496497
const { edgeSnapshots } = batchRemoveInverse.data
497498

498-
if (entry.operation.type === 'add-edge') {
499-
// Undo add-edge: remove the edges that were added
500-
const edgesToRemove = edgeSnapshots
501-
.filter((e) => workflowStore.edges.find((edge) => edge.id === e.id))
502-
.map((e) => e.id)
503-
504-
if (edgesToRemove.length > 0) {
505-
addToQueue({
506-
id: opId,
507-
operation: {
508-
operation: 'batch-remove-edges',
509-
target: 'edges',
510-
payload: { ids: edgesToRemove },
511-
},
512-
workflowId: activeWorkflowId,
513-
userId,
514-
})
515-
edgesToRemove.forEach((id) => workflowStore.removeEdge(id))
516-
}
517-
logger.debug('Undid add-edge', { edgeCount: edgesToRemove.length })
518-
} else {
519-
// Undo batch-remove-edges: add edges back
520-
const edgesToAdd = edgeSnapshots.filter(
521-
(e) => !workflowStore.edges.find((edge) => edge.id === e.id)
522-
)
499+
const edgesToRemove = edgeSnapshots
500+
.filter((e) => workflowStore.edges.find((edge) => edge.id === e.id))
501+
.map((e) => e.id)
523502

524-
if (edgesToAdd.length > 0) {
525-
addToQueue({
526-
id: opId,
527-
operation: {
528-
operation: 'batch-add-edges',
529-
target: 'edges',
530-
payload: { edges: edgesToAdd },
531-
},
532-
workflowId: activeWorkflowId,
533-
userId,
534-
})
535-
edgesToAdd.forEach((edge) => workflowStore.addEdge(edge))
536-
}
537-
logger.debug('Undid batch-remove-edges', { edgeCount: edgesToAdd.length })
503+
if (edgesToRemove.length > 0) {
504+
addToQueue({
505+
id: opId,
506+
operation: {
507+
operation: 'batch-remove-edges',
508+
target: 'edges',
509+
payload: { ids: edgesToRemove },
510+
},
511+
workflowId: activeWorkflowId,
512+
userId,
513+
})
514+
edgesToRemove.forEach((id) => workflowStore.removeEdge(id))
515+
}
516+
logger.debug('Undid add-edge', { edgeCount: edgesToRemove.length })
517+
break
518+
}
519+
case 'batch-add-edges': {
520+
// Undo batch-remove-edges: inverse is batch-add-edges, so add edges back
521+
const batchAddInverse = entry.inverse as BatchAddEdgesOperation
522+
const { edgeSnapshots } = batchAddInverse.data
523+
524+
const edgesToAdd = edgeSnapshots.filter(
525+
(e) => !workflowStore.edges.find((edge) => edge.id === e.id)
526+
)
527+
528+
if (edgesToAdd.length > 0) {
529+
addToQueue({
530+
id: opId,
531+
operation: {
532+
operation: 'batch-add-edges',
533+
target: 'edges',
534+
payload: { edges: edgesToAdd },
535+
},
536+
workflowId: activeWorkflowId,
537+
userId,
538+
})
539+
edgesToAdd.forEach((edge) => workflowStore.addEdge(edge))
538540
}
541+
logger.debug('Undid batch-remove-edges', { edgeCount: edgesToAdd.length })
539542
break
540543
}
541544
case 'batch-move-blocks': {
@@ -1046,6 +1049,32 @@ export function useUndoRedo() {
10461049
logger.debug('Redid batch-remove-edges', { edgeCount: edgesToRemove.length })
10471050
break
10481051
}
1052+
case 'batch-add-edges': {
1053+
// Redo batch-add-edges: add all edges again
1054+
const batchAddOp = entry.operation as BatchAddEdgesOperation
1055+
const { edgeSnapshots } = batchAddOp.data
1056+
1057+
const edgesToAdd = edgeSnapshots.filter(
1058+
(e) => !workflowStore.edges.find((edge) => edge.id === e.id)
1059+
)
1060+
1061+
if (edgesToAdd.length > 0) {
1062+
addToQueue({
1063+
id: opId,
1064+
operation: {
1065+
operation: 'batch-add-edges',
1066+
target: 'edges',
1067+
payload: { edges: edgesToAdd },
1068+
},
1069+
workflowId: activeWorkflowId,
1070+
userId,
1071+
})
1072+
edgesToAdd.forEach((edge) => workflowStore.addEdge(edge))
1073+
}
1074+
1075+
logger.debug('Redid batch-add-edges', { edgeCount: edgesToAdd.length })
1076+
break
1077+
}
10491078
case 'batch-move-blocks': {
10501079
const batchMoveOp = entry.operation as BatchMoveBlocksOperation
10511080
const currentBlocks = useWorkflowStore.getState().blocks

0 commit comments

Comments
 (0)