From cd97da2d34fcf576100d03fa30608ce26f1784c4 Mon Sep 17 00:00:00 2001 From: Baptiste Arnaud Date: Fri, 29 Sep 2023 11:23:04 +0200 Subject: [PATCH] :bug: (typebotLink) Fix nested typebot link pop --- packages/bot-engine/executeGroup.ts | 2 +- packages/bot-engine/getNextGroup.ts | 3 ++- packages/bot-engine/startBotFlow.ts | 14 ++++++++------ .../bot-engine/whatsapp/startWhatsAppSession.ts | 3 ++- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/packages/bot-engine/executeGroup.ts b/packages/bot-engine/executeGroup.ts index 821c7b636..ce519fbab 100644 --- a/packages/bot-engine/executeGroup.ts +++ b/packages/bot-engine/executeGroup.ts @@ -119,7 +119,7 @@ export const executeGroup = } } - if (!nextEdgeId && state.typebotsQueue.length === 1) + if (!nextEdgeId && newSessionState.typebotsQueue.length === 1) return { messages, newSessionState, clientSideActions, logs } const nextGroup = await getNextGroup(newSessionState)( diff --git a/packages/bot-engine/getNextGroup.ts b/packages/bot-engine/getNextGroup.ts index b3826bf8b..212331c04 100644 --- a/packages/bot-engine/getNextGroup.ts +++ b/packages/bot-engine/getNextGroup.ts @@ -23,7 +23,7 @@ export const getNextGroup = isCompleted: true, hasStarted: state.typebotsQueue[0].answers.length > 0, }) - const newSessionState = { + let newSessionState = { ...state, typebotsQueue: [ { @@ -69,6 +69,7 @@ export const getNextGroup = ], } satisfies SessionState const nextGroup = await getNextGroup(newSessionState)(nextEdgeId) + newSessionState = nextGroup.newSessionState if (!nextGroup) return { newSessionState, diff --git a/packages/bot-engine/startBotFlow.ts b/packages/bot-engine/startBotFlow.ts index 88ee436b9..68edf7d56 100644 --- a/packages/bot-engine/startBotFlow.ts +++ b/packages/bot-engine/startBotFlow.ts @@ -7,6 +7,7 @@ export const startBotFlow = async ( state: SessionState, startGroupId?: string ): Promise => { + let newSessionState = state if (startGroupId) { const group = state.typebotsQueue[0].typebot.groups.find( (group) => group.id === startGroupId @@ -16,12 +17,13 @@ export const startBotFlow = async ( code: 'BAD_REQUEST', message: "startGroupId doesn't exist", }) - return executeGroup(state)(group) + return executeGroup(newSessionState)(group) } const firstEdgeId = - state.typebotsQueue[0].typebot.groups[0].blocks[0].outgoingEdgeId - if (!firstEdgeId) return { messages: [], newSessionState: state } - const nextGroup = await getNextGroup(state)(firstEdgeId) - if (!nextGroup.group) return { messages: [], newSessionState: state } - return executeGroup(state)(nextGroup.group) + newSessionState.typebotsQueue[0].typebot.groups[0].blocks[0].outgoingEdgeId + if (!firstEdgeId) return { messages: [], newSessionState } + const nextGroup = await getNextGroup(newSessionState)(firstEdgeId) + newSessionState = nextGroup.newSessionState + if (!nextGroup.group) return { messages: [], newSessionState } + return executeGroup(newSessionState)(nextGroup.group) } diff --git a/packages/bot-engine/whatsapp/startWhatsAppSession.ts b/packages/bot-engine/whatsapp/startWhatsAppSession.ts index 0140d7d6e..c79731b79 100644 --- a/packages/bot-engine/whatsapp/startWhatsAppSession.ts +++ b/packages/bot-engine/whatsapp/startWhatsAppSession.ts @@ -88,12 +88,13 @@ export const startWhatsAppSession = async ({ }, }) - const sessionState: SessionState = chatReply.newSessionState + let sessionState: SessionState = chatReply.newSessionState // If first block is an input block, we can directly continue the bot flow const firstEdgeId = sessionState.typebotsQueue[0].typebot.groups[0].blocks[0].outgoingEdgeId const nextGroup = await getNextGroup(sessionState)(firstEdgeId) + sessionState = nextGroup.newSessionState const firstBlock = nextGroup.group?.blocks.at(0) if (firstBlock && isInputBlock(firstBlock)) { const resultId = sessionState.typebotsQueue[0].resultId