@@ -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