diff --git a/packages/bot-engine/blocks/inputs/date/parseDateInput.ts b/packages/bot-engine/blocks/inputs/date/parseDateInput.ts index 717f18fc5..dac081476 100644 --- a/packages/bot-engine/blocks/inputs/date/parseDateInput.ts +++ b/packages/bot-engine/blocks/inputs/date/parseDateInput.ts @@ -8,9 +8,11 @@ export const parseDateInput = const variables = state.typebotsQueue[0].typebot.variables if (!block.options) return deepParseVariables(variables)(block) return { - ...deepParseVariables(variables)(block), + ...block, options: { - ...deepParseVariables(variables)(block.options), + ...deepParseVariables(variables, { removeEmptyStrings: true })( + block.options + ), min: parseDateLimit( block.options.min, block.options.hasTime, diff --git a/packages/bot-engine/blocks/integrations/googleSheets/getRow.ts b/packages/bot-engine/blocks/integrations/googleSheets/getRow.ts index 72ca07666..6783784c8 100644 --- a/packages/bot-engine/blocks/integrations/googleSheets/getRow.ts +++ b/packages/bot-engine/blocks/integrations/googleSheets/getRow.ts @@ -21,7 +21,7 @@ export const getRow = async ( const logs: ChatLog[] = [] const { variables } = state.typebotsQueue[0].typebot const { sheetId, cellsToExtract, filter, ...parsedOptions } = - deepParseVariables(variables)(options) + deepParseVariables(variables, { removeEmptyStrings: true })(options) if (!sheetId) return { outgoingEdgeId } const doc = await getAuthenticatedGoogleDoc({ diff --git a/packages/bot-engine/blocks/integrations/googleSheets/updateRow.ts b/packages/bot-engine/blocks/integrations/googleSheets/updateRow.ts index d2ad5aff9..d88729b16 100644 --- a/packages/bot-engine/blocks/integrations/googleSheets/updateRow.ts +++ b/packages/bot-engine/blocks/integrations/googleSheets/updateRow.ts @@ -17,8 +17,9 @@ export const updateRow = async ( }: { outgoingEdgeId?: string; options: GoogleSheetsUpdateRowOptions } ): Promise => { const { variables } = state.typebotsQueue[0].typebot - const { sheetId, filter, ...parsedOptions } = - deepParseVariables(variables)(options) + const { sheetId, filter, ...parsedOptions } = deepParseVariables(variables, { + removeEmptyStrings: true, + })(options) const referenceCell = 'referenceCell' in parsedOptions && parsedOptions.referenceCell diff --git a/packages/bot-engine/executeGroup.ts b/packages/bot-engine/executeGroup.ts index c5beeb59f..cf12f3122 100644 --- a/packages/bot-engine/executeGroup.ts +++ b/packages/bot-engine/executeGroup.ts @@ -226,7 +226,8 @@ export const parseInput = } case InputBlockType.NUMBER: { const parsedBlock = deepParseVariables( - state.typebotsQueue[0].typebot.variables + state.typebotsQueue[0].typebot.variables, + { removeEmptyStrings: true } )({ ...block, prefilledValue: getPrefilledInputValue( @@ -254,7 +255,8 @@ export const parseInput = } case InputBlockType.RATING: { const parsedBlock = deepParseVariables( - state.typebotsQueue[0].typebot.variables + state.typebotsQueue[0].typebot.variables, + { removeEmptyStrings: true } )({ ...block, prefilledValue: getPrefilledInputValue( @@ -272,7 +274,9 @@ export const parseInput = } } default: { - return deepParseVariables(state.typebotsQueue[0].typebot.variables)({ + return deepParseVariables(state.typebotsQueue[0].typebot.variables, { + removeEmptyStrings: true, + })({ ...block, runtimeOptions: await computeRuntimeOptions(state)(block), prefilledValue: getPrefilledInputValue( diff --git a/packages/bot-engine/forge/executeForgedBlock.ts b/packages/bot-engine/forge/executeForgedBlock.ts index ca235a1f7..79be376ba 100644 --- a/packages/bot-engine/forge/executeForgedBlock.ts +++ b/packages/bot-engine/forge/executeForgedBlock.ts @@ -118,7 +118,8 @@ export const executeForgedBlock = async ( : undefined const parsedOptions = deepParseVariables( - state.typebotsQueue[0].typebot.variables + state.typebotsQueue[0].typebot.variables, + { removeEmptyStrings: true } )(block.options) await action?.run?.server?.({ credentials: credentialsData ?? {}, diff --git a/packages/bot-engine/parseBubbleBlock.ts b/packages/bot-engine/parseBubbleBlock.ts index f943e1d07..e7e77544b 100644 --- a/packages/bot-engine/parseBubbleBlock.ts +++ b/packages/bot-engine/parseBubbleBlock.ts @@ -55,7 +55,9 @@ export const parseBubbleBlock = ( } case BubbleBlockType.EMBED: { - const message = deepParseVariables(variables)(block) + const message = deepParseVariables(variables, { + removeEmptyStrings: true, + })(block) return { ...message, content: { @@ -69,7 +71,9 @@ export const parseBubbleBlock = ( } case BubbleBlockType.VIDEO: { const parsedContent = block.content - ? deepParseVariables(variables)(block.content) + ? deepParseVariables(variables, { removeEmptyStrings: true })( + block.content + ) : undefined return { @@ -85,7 +89,7 @@ export const parseBubbleBlock = ( } } default: - return deepParseVariables(variables)(block) + return deepParseVariables(variables, { removeEmptyStrings: true })(block) } } diff --git a/packages/bot-engine/startSession.ts b/packages/bot-engine/startSession.ts index 845ff33dd..371a36dc8 100644 --- a/packages/bot-engine/startSession.ts +++ b/packages/bot-engine/startSession.ts @@ -154,7 +154,8 @@ export const startSession = async ({ typebot: { id: typebot.id, settings: deepParseVariables( - initialState.typebotsQueue[0].typebot.variables + initialState.typebotsQueue[0].typebot.variables, + { removeEmptyStrings: true } )(typebot.settings), theme: sanitizeAndParseTheme(typebot.theme, { variables: initialState.typebotsQueue[0].typebot.variables, @@ -257,7 +258,8 @@ export const startSession = async ({ typebot: { id: typebot.id, settings: deepParseVariables( - newSessionState.typebotsQueue[0].typebot.variables + newSessionState.typebotsQueue[0].typebot.variables, + { removeEmptyStrings: true } )(typebot.settings), theme: sanitizeAndParseTheme(typebot.theme, { variables: initialState.typebotsQueue[0].typebot.variables, @@ -274,7 +276,8 @@ export const startSession = async ({ typebot: { id: typebot.id, settings: deepParseVariables( - newSessionState.typebotsQueue[0].typebot.variables + newSessionState.typebotsQueue[0].typebot.variables, + { removeEmptyStrings: true } )(typebot.settings), theme: sanitizeAndParseTheme(typebot.theme, { variables: initialState.typebotsQueue[0].typebot.variables, @@ -451,9 +454,11 @@ const sanitizeAndParseTheme = ( { variables }: { variables: Variable[] } ): Theme => ({ general: theme.general - ? deepParseVariables(variables)(theme.general) + ? deepParseVariables(variables, { removeEmptyStrings: true })(theme.general) + : undefined, + chat: theme.chat + ? deepParseVariables(variables, { removeEmptyStrings: true })(theme.chat) : undefined, - chat: theme.chat ? deepParseVariables(variables)(theme.chat) : undefined, customCss: theme.customCss ? removeLiteBadgeCss(parseVariables(variables)(theme.customCss)) : undefined,