From 1925569b4a168017188ffe9f32fc885cd63c31cf Mon Sep 17 00:00:00 2001 From: Baptiste Arnaud Date: Thu, 28 Aug 2025 11:17:47 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20Refactor=20content=20retrieval?= =?UTF-8?q?=20logic=20across=20various=20input=20parsing=20functions=20to?= =?UTF-8?q?=20use=20logical=20OR=20for=20default=20values?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/bot-engine/src/blocks/cards/parseCardsReply.ts | 7 ++++--- .../src/blocks/inputs/buttons/parseSingleChoiceReply.ts | 5 ++++- .../bot-engine/src/blocks/inputs/date/parseDateReply.ts | 4 ++-- .../inputs/payment/computePaymentInputRuntimeOptions.ts | 2 +- .../src/blocks/inputs/rating/validateRatingReply.ts | 2 +- packages/bot-engine/src/blocks/inputs/time/parseTime.ts | 2 +- .../blocks/integrations/chatwoot/executeChatwootBlock.ts | 2 +- packages/bot-engine/src/continueBotFlow.ts | 2 +- packages/bot-engine/src/helpers/parseItemContent.ts | 2 +- 9 files changed, 16 insertions(+), 12 deletions(-) diff --git a/packages/bot-engine/src/blocks/cards/parseCardsReply.ts b/packages/bot-engine/src/blocks/cards/parseCardsReply.ts index 6dfcf13f8..d9e649c71 100644 --- a/packages/bot-engine/src/blocks/cards/parseCardsReply.ts +++ b/packages/bot-engine/src/blocks/cards/parseCardsReply.ts @@ -92,11 +92,12 @@ export const parseCardsReply = ( newSetVariableHistory = updatedSetVariableHistory; } + const content = matchedItem.title || matchedItem.imageUrl; + if (!content) return { status: "fail" }; + return { status: "success", - content: isNotEmpty(matchedItem.title) - ? matchedItem.title - : (matchedItem.imageUrl ?? ""), + content, outgoingEdgeId: matchedPath?.outgoingEdgeId, newSessionState, newSetVariableHistory, diff --git a/packages/bot-engine/src/blocks/inputs/buttons/parseSingleChoiceReply.ts b/packages/bot-engine/src/blocks/inputs/buttons/parseSingleChoiceReply.ts index 4272a2ff1..1c12e8a3d 100644 --- a/packages/bot-engine/src/blocks/inputs/buttons/parseSingleChoiceReply.ts +++ b/packages/bot-engine/src/blocks/inputs/buttons/parseSingleChoiceReply.ts @@ -27,9 +27,12 @@ export const parseSingleChoiceReply = ( if (!matchedItem) return { status: "fail" }; + const content = matchedItem.value || parseItemContent(matchedItem); + if (!content) return { status: "fail" }; + return { status: "success", - content: matchedItem.value ?? parseItemContent(matchedItem) ?? "", + content: matchedItem.value ?? parseItemContent(matchedItem), outgoingEdgeId: matchedItem.outgoingEdgeId, }; }; diff --git a/packages/bot-engine/src/blocks/inputs/date/parseDateReply.ts b/packages/bot-engine/src/blocks/inputs/date/parseDateReply.ts index 275e26726..24276a7f1 100644 --- a/packages/bot-engine/src/blocks/inputs/date/parseDateReply.ts +++ b/packages/bot-engine/src/blocks/inputs/date/parseDateReply.ts @@ -14,13 +14,13 @@ export const parseDateReply = ( block: DateInputBlock, ): ParsedReply => { const parsedDate = ( - block.options?.format ?? defaultDateInputOptions.format + block.options?.format || defaultDateInputOptions.format ).startsWith("dd") ? chronoParser.GB.parse(reply) : chronoParser.parse(reply); if (parsedDate.length === 0) return { status: "fail" }; const formatString = - block.options?.format ?? + block.options?.format || (block.options?.hasTime ? defaultDateInputOptions.formatWithTime : defaultDateInputOptions.format); diff --git a/packages/bot-engine/src/blocks/inputs/payment/computePaymentInputRuntimeOptions.ts b/packages/bot-engine/src/blocks/inputs/payment/computePaymentInputRuntimeOptions.ts index cc38ff5c0..ecb864c1d 100644 --- a/packages/bot-engine/src/blocks/inputs/payment/computePaymentInputRuntimeOptions.ts +++ b/packages/bot-engine/src/blocks/inputs/payment/computePaymentInputRuntimeOptions.ts @@ -46,7 +46,7 @@ const createStripePaymentIntent = async ( : stripeKeys.live.secretKey, { apiVersion: "2024-09-30.acacia" }, ); - const currency = options?.currency ?? defaultPaymentInputOptions.currency; + const currency = options?.currency || defaultPaymentInputOptions.currency; const amount = Math.round( Number(parseVariables(options.amount, { variables, sessionStore })) * (isZeroDecimalCurrency(currency) ? 1 : 100), diff --git a/packages/bot-engine/src/blocks/inputs/rating/validateRatingReply.ts b/packages/bot-engine/src/blocks/inputs/rating/validateRatingReply.ts index 7775649ae..31834a871 100644 --- a/packages/bot-engine/src/blocks/inputs/rating/validateRatingReply.ts +++ b/packages/bot-engine/src/blocks/inputs/rating/validateRatingReply.ts @@ -2,4 +2,4 @@ import { defaultRatingInputOptions } from "@typebot.io/blocks-inputs/rating/cons import type { RatingInputBlock } from "@typebot.io/blocks-inputs/rating/schema"; export const validateRatingReply = (reply: string, block: RatingInputBlock) => - Number(reply) <= (block.options?.length ?? defaultRatingInputOptions.length); + Number(reply) <= (block.options?.length || defaultRatingInputOptions.length); diff --git a/packages/bot-engine/src/blocks/inputs/time/parseTime.ts b/packages/bot-engine/src/blocks/inputs/time/parseTime.ts index 52424acec..51a6d237b 100644 --- a/packages/bot-engine/src/blocks/inputs/time/parseTime.ts +++ b/packages/bot-engine/src/blocks/inputs/time/parseTime.ts @@ -16,7 +16,7 @@ export const parseTime = ( status: "success", content: format( parsedDate, - options?.format ?? defaultTimeInputOptions.format, + options?.format || defaultTimeInputOptions.format, ), }; }; diff --git a/packages/bot-engine/src/blocks/integrations/chatwoot/executeChatwootBlock.ts b/packages/bot-engine/src/blocks/integrations/chatwoot/executeChatwootBlock.ts index 285ea8f3b..5371c9217 100644 --- a/packages/bot-engine/src/blocks/integrations/chatwoot/executeChatwootBlock.ts +++ b/packages/bot-engine/src/blocks/integrations/chatwoot/executeChatwootBlock.ts @@ -15,7 +15,7 @@ const parseSetUserCode = ( ) => user?.email || user?.id ? ` -window.$chatwoot.setUser(${user?.id ?? user.email ?? `"${resultId}"`}, { +window.$chatwoot.setUser(${user?.id || user.email || `"${resultId}"`}, { email: ${user?.email ? user.email : "undefined"}, name: ${user?.name ? user.name : "undefined"}, avatar_url: ${user?.avatarUrl ? user.avatarUrl : "undefined"}, diff --git a/packages/bot-engine/src/continueBotFlow.ts b/packages/bot-engine/src/continueBotFlow.ts index b7584e842..58d4003cb 100644 --- a/packages/bot-engine/src/continueBotFlow.ts +++ b/packages/bot-engine/src/continueBotFlow.ts @@ -33,7 +33,7 @@ import type { Group } from "@typebot.io/groups/schemas"; import { parseAllowedFileTypesMetadata } from "@typebot.io/lib/extensionFromMimeType"; import { isURL } from "@typebot.io/lib/isURL"; import { parseUnknownError } from "@typebot.io/lib/parseUnknownError"; -import { byId, isDefined } from "@typebot.io/lib/utils"; +import { byId, isDefined, isNotEmpty } from "@typebot.io/lib/utils"; import type { AnswerInSessionState } from "@typebot.io/results/schemas/answers"; import type { SessionStore } from "@typebot.io/runtime-session-store"; import { defaultSystemMessages } from "@typebot.io/settings/constants"; diff --git a/packages/bot-engine/src/helpers/parseItemContent.ts b/packages/bot-engine/src/helpers/parseItemContent.ts index 5925919cf..5b3678fac 100644 --- a/packages/bot-engine/src/helpers/parseItemContent.ts +++ b/packages/bot-engine/src/helpers/parseItemContent.ts @@ -7,5 +7,5 @@ export const parseItemContent = ( // Buttons if ("content" in item) return item.content; // Picture choice - if ("title" in item) return item.title ?? item.pictureSrc; + if ("title" in item) return item.title || item.pictureSrc; };