From 45f7e2ca5ecc2b605b50ae23620a81ffb1224d2f Mon Sep 17 00:00:00 2001 From: Baptiste Arnaud Date: Wed, 28 May 2025 14:52:33 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=B8=20Only=20execute=20reply=20event?= =?UTF-8?q?=20with=20outgoind=20edge=20id?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/bot-engine/src/continueBotFlow.ts | 8 +++++--- packages/bot-engine/src/events/executeReplyEvent.ts | 9 ++++++++- .../src/events/updateCurrentBlockIdWithEvent.ts | 5 +++-- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/packages/bot-engine/src/continueBotFlow.ts b/packages/bot-engine/src/continueBotFlow.ts index e07af050d..6ea5f24bb 100644 --- a/packages/bot-engine/src/continueBotFlow.ts +++ b/packages/bot-engine/src/continueBotFlow.ts @@ -943,10 +943,12 @@ export const safeJsonParse = (value: string): unknown => { } }; -const findReplyEvent = (state: SessionState): ReplyEvent | undefined => +const findReplyEvent = ( + state: SessionState, +): (ReplyEvent & { outgoingEdgeId: string }) | undefined => state.typebotsQueue[0].typebot.events?.find( - (e) => e.type === EventType.REPLY, - ); + (e) => e.type === EventType.REPLY && e.outgoingEdgeId, + ) as (ReplyEvent & { outgoingEdgeId: string }) | undefined; const findInvalidReplyEvent = ( state: SessionState, diff --git a/packages/bot-engine/src/events/executeReplyEvent.ts b/packages/bot-engine/src/events/executeReplyEvent.ts index a8b9b0369..472617df6 100644 --- a/packages/bot-engine/src/events/executeReplyEvent.ts +++ b/packages/bot-engine/src/events/executeReplyEvent.ts @@ -10,8 +10,15 @@ type Props = { reply: InputMessage; }; +type ReplyEventWithDefinedOutgoingEdgeId = Omit< + ReplyEvent, + "outgoingEdgeId" +> & { + outgoingEdgeId: string; +}; + export const executeReplyEvent = ( - event: ReplyEvent, + event: ReplyEventWithDefinedOutgoingEdgeId, { state, reply }: Props, ) => { if (!state.currentBlockId) diff --git a/packages/bot-engine/src/events/updateCurrentBlockIdWithEvent.ts b/packages/bot-engine/src/events/updateCurrentBlockIdWithEvent.ts index 21a41bdc9..db930e50e 100644 --- a/packages/bot-engine/src/events/updateCurrentBlockIdWithEvent.ts +++ b/packages/bot-engine/src/events/updateCurrentBlockIdWithEvent.ts @@ -5,7 +5,7 @@ import { addDummyFirstBlockToGroupIfMissing } from "../addDummyFirstBlockToGroup type Props = { state: SessionState; - event: TDraggableEvent; + event: TDraggableEvent & { outgoingEdgeId: string }; }; export const updateCurrentBlockIdWithEvent = ({ state, event }: Props) => { @@ -14,10 +14,11 @@ export const updateCurrentBlockIdWithEvent = ({ state, event }: Props) => { const edge = newSessionState.typebotsQueue[0].typebot.edges.find( (edge) => edge.id === event.outgoingEdgeId, ); + if (!edge) throw new TRPCError({ code: "BAD_REQUEST", - message: "Event is not connected", + message: `Could not find outgoing edge`, }); newSessionState = addDummyFirstBlockToGroupIfMissing(