diff --git a/apps/builder/src/features/blocks/inputs/pictureChoice/components/PictureChoiceItemNode.tsx b/apps/builder/src/features/blocks/inputs/pictureChoice/components/PictureChoiceItemNode.tsx index 498deb643..0ae32b7cc 100644 --- a/apps/builder/src/features/blocks/inputs/pictureChoice/components/PictureChoiceItemNode.tsx +++ b/apps/builder/src/features/blocks/inputs/pictureChoice/components/PictureChoiceItemNode.tsx @@ -58,6 +58,10 @@ export const PictureChoiceItemNode = ({ } useEventListener('wheel', handleMouseWheel, ref.current) + const blockId = typebot + ? typebot.groups.at(indices.groupIndex)?.blocks?.at(indices.blockIndex)?.id + : undefined + return ( - {typebot && ( + {typebot && blockId && ( )} diff --git a/apps/builder/src/features/graph/components/nodes/block/BlockNode.tsx b/apps/builder/src/features/graph/components/nodes/block/BlockNode.tsx index fe500cefb..3ce6904f7 100644 --- a/apps/builder/src/features/graph/components/nodes/block/BlockNode.tsx +++ b/apps/builder/src/features/graph/components/nodes/block/BlockNode.tsx @@ -88,7 +88,7 @@ export const BlockNode = ({ previewingEdge?.to.blockId === block.id || previewingBlock?.id === block.id - const groupId = typebot?.groups[indices.groupIndex].id + const groupId = typebot?.groups.at(indices.groupIndex)?.id const isDraggingGraph = useGroupsStore((state) => state.isDraggingGraph) @@ -240,11 +240,13 @@ export const BlockNode = ({ transition="border-color 0.2s" > - {typebot?.groups[indices.groupIndex].id && ( + {typebot?.groups.at(indices.groupIndex)?.id && ( )} {(hasIcomingEdge || isDefined(connectingIds)) && ( diff --git a/apps/builder/src/features/graph/components/nodes/item/ItemNode.tsx b/apps/builder/src/features/graph/components/nodes/item/ItemNode.tsx index dfafa0888..22e3a4036 100644 --- a/apps/builder/src/features/graph/components/nodes/item/ItemNode.tsx +++ b/apps/builder/src/features/graph/components/nodes/item/ItemNode.tsx @@ -70,6 +70,8 @@ export const ItemNode = ({ const handleMouseEnter = () => setIsMouseOver(true) const handleMouseLeave = () => setIsMouseOver(false) + const groupId = typebot?.groups.at(indices.groupIndex)?.id + return ( renderMenu={() => } @@ -114,20 +116,22 @@ export const ItemNode = ({ isMouseOver={isMouseOver} indices={indices} /> - {typebot && (isConnectable || pathname.endsWith('analytics')) && ( - - )} + {typebot && + (isConnectable || pathname.endsWith('analytics')) && + groupId && ( + + )} )} diff --git a/apps/builder/src/features/graph/components/nodes/item/ItemNodesList.tsx b/apps/builder/src/features/graph/components/nodes/item/ItemNodesList.tsx index 7e806e893..acb4f3e4b 100644 --- a/apps/builder/src/features/graph/components/nodes/item/ItemNodesList.tsx +++ b/apps/builder/src/features/graph/components/nodes/item/ItemNodesList.tsx @@ -44,7 +44,7 @@ export const ItemNodesList = ({ const isLastBlock = isDefined(typebot) && - typebot.groups[groupIndex]?.blocks?.[blockIndex + 1] === undefined + typebot.groups.at(groupIndex)?.blocks?.at(blockIndex + 1) === undefined const someChoiceItemsAreNotConnected = block.type === InputBlockType.CHOICE || @@ -131,6 +131,8 @@ export const ItemNodesList = ({ elem && (placeholderRefs.current[idx] = elem) } + const groupId = typebot?.groups.at(groupIndex)?.id + return ( ))} - {isLastBlock && someChoiceItemsAreNotConnected && ( - + {isLastBlock && someChoiceItemsAreNotConnected && groupId && ( + )} {draggedItem && draggedItem.blockId === block.id && ( diff --git a/packages/bot-engine/getFirstEdgeId.ts b/packages/bot-engine/getFirstEdgeId.ts index 719263008..8c290fa8b 100644 --- a/packages/bot-engine/getFirstEdgeId.ts +++ b/packages/bot-engine/getFirstEdgeId.ts @@ -19,5 +19,5 @@ export const getFirstEdgeId = ({ return event.outgoingEdgeId } if (typebot.version === '6') return typebot.events[0].outgoingEdgeId - return typebot.groups[0].blocks[0].outgoingEdgeId + return typebot.groups.at(0)?.blocks.at(0)?.outgoingEdgeId } diff --git a/packages/lib/getBlockById.ts b/packages/lib/getBlockById.ts index a361952aa..74c5e21a7 100644 --- a/packages/lib/getBlockById.ts +++ b/packages/lib/getBlockById.ts @@ -7,10 +7,10 @@ export const getBlockById = ( for (let groupIndex = 0; groupIndex < groups.length; groupIndex++) { for ( let blockIndex = 0; - blockIndex < groups[groupIndex].blocks.length; + blockIndex < (groups.at(groupIndex)?.blocks?.length ?? 0); blockIndex++ ) { - if (groups[groupIndex].blocks[blockIndex].id === blockId) { + if (groups.at(groupIndex)?.blocks?.at(blockIndex)?.id === blockId) { return { block: groups[groupIndex].blocks[blockIndex], group: groups[groupIndex],