From 647afdb8faae73edfaffd55b0c29937ba2c87ea6 Mon Sep 17 00:00:00 2001 From: Baptiste Arnaud Date: Thu, 9 Nov 2023 09:22:33 +0100 Subject: [PATCH] :bug: (editor) Fix edge delete with undefined groupIndex --- .../editor/providers/typebotActions/blocks.ts | 6 +++--- .../editor/providers/typebotActions/edges.ts | 12 +++++++++--- .../editor/providers/typebotActions/items.ts | 4 ++-- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/apps/builder/src/features/editor/providers/typebotActions/blocks.ts b/apps/builder/src/features/editor/providers/typebotActions/blocks.ts index 3917ce759..9180fa875 100644 --- a/apps/builder/src/features/editor/providers/typebotActions/blocks.ts +++ b/apps/builder/src/features/editor/providers/typebotActions/blocks.ts @@ -8,7 +8,7 @@ import { } from '@typebot.io/schemas' import { SetTypebot } from '../TypebotProvider' import { produce, Draft } from 'immer' -import { cleanUpEdgeDraft, deleteEdgeDraft } from './edges' +import { deleteConnectedEdgesDraft, deleteEdgeDraft } from './edges' import { createId } from '@paralleldrive/cuid2' import { byId, blockHasItems } from '@typebot.io/lib' import { duplicateItemDraft } from './items' @@ -67,8 +67,8 @@ export const blocksAction = (setTypebot: SetTypebot): BlocksActions => ({ setTypebot((typebot) => produce(typebot, (typebot) => { const removingBlock = typebot.groups[groupIndex].blocks[blockIndex] + deleteConnectedEdgesDraft(typebot, removingBlock.id) removeBlockFromGroup({ groupIndex, blockIndex })(typebot) - cleanUpEdgeDraft(typebot, removingBlock.id) removeEmptyGroups(typebot) }) ), @@ -153,7 +153,7 @@ export const duplicateBlockDraft = (block: BlockV6): BlockV6 => { export const deleteGroupDraft = (typebot: Draft) => (groupIndex: number) => { - cleanUpEdgeDraft(typebot, typebot.groups[groupIndex].id) + deleteConnectedEdgesDraft(typebot, typebot.groups[groupIndex].id) typebot.groups.splice(groupIndex, 1) } diff --git a/apps/builder/src/features/editor/providers/typebotActions/edges.ts b/apps/builder/src/features/editor/providers/typebotActions/edges.ts index e15f4bb3d..ceb5ebf6b 100644 --- a/apps/builder/src/features/editor/providers/typebotActions/edges.ts +++ b/apps/builder/src/features/editor/providers/typebotActions/edges.ts @@ -152,8 +152,14 @@ const deleteOutgoingEdgeIdProps = ({ } const fromGroupIndex = groupIndex ?? - typebot.groups.findIndex((g) => - g.blocks.some((b) => 'blockId' in edge.from && b.id === edge.from.blockId) + typebot.groups.findIndex( + (g) => + edge.to.groupId === g.id || + g.blocks.some( + (b) => + 'blockId' in edge.from && + (b.id === edge.from.blockId || b.id === edge.to.blockId) + ) ) const fromBlockIndex = typebot.groups[fromGroupIndex].blocks.findIndex( byId(edge.from.blockId) @@ -175,7 +181,7 @@ const deleteOutgoingEdgeIdProps = ({ undefined } -export const cleanUpEdgeDraft = ( +export const deleteConnectedEdgesDraft = ( typebot: Draft, deletedNodeId: string ) => { diff --git a/apps/builder/src/features/editor/providers/typebotActions/items.ts b/apps/builder/src/features/editor/providers/typebotActions/items.ts index 104b9b69d..52995b97a 100644 --- a/apps/builder/src/features/editor/providers/typebotActions/items.ts +++ b/apps/builder/src/features/editor/providers/typebotActions/items.ts @@ -8,7 +8,7 @@ import { } from '@typebot.io/schemas' import { SetTypebot } from '../TypebotProvider' import { Draft, produce } from 'immer' -import { cleanUpEdgeDraft } from './edges' +import { deleteConnectedEdgesDraft } from './edges' import { byId, blockHasItems } from '@typebot.io/lib' import { createId } from '@paralleldrive/cuid2' import { @@ -172,7 +172,7 @@ const itemsAction = (setTypebot: SetTypebot): ItemsActions => ({ ] as BlockWithItems const removingItem = block.items[itemIndex] block.items.splice(itemIndex, 1) - cleanUpEdgeDraft(typebot, removingItem.id) + deleteConnectedEdgesDraft(typebot, removingItem.id) }) ), })