diff --git a/packages/bot-engine/blocks/inputs/number/validateNumber.ts b/packages/bot-engine/blocks/inputs/number/validateNumber.ts index a7a69c1fa..35a367143 100644 --- a/packages/bot-engine/blocks/inputs/number/validateNumber.ts +++ b/packages/bot-engine/blocks/inputs/number/validateNumber.ts @@ -1,10 +1,29 @@ import { isNotDefined } from '@typebot.io/lib' -import { NumberInputBlock } from '@typebot.io/schemas' +import { NumberInputBlock, Variable } from '@typebot.io/schemas' +import { parseVariables } from '../../../variables/parseVariables' export const validateNumber = ( inputValue: string, - options: NumberInputBlock['options'] -) => - inputValue !== '' && - (isNotDefined(options?.min) || Number(inputValue) >= Number(options.min)) && - (isNotDefined(options?.max) || Number(inputValue) <= Number(options.max)) + { + options, + variables, + }: { + options: NumberInputBlock['options'] + variables: Variable[] + } +) => { + const min = + options?.min && typeof options.min === 'string' + ? Number(parseVariables(variables)(options.min)) + : undefined + const max = + options?.min && typeof options.min === 'string' + ? Number(parseVariables(variables)(options.min)) + : undefined + + return ( + inputValue !== '' && + (isNotDefined(min) || Number(inputValue) >= min) && + (isNotDefined(max) || Number(inputValue) <= max) + ) +} diff --git a/packages/bot-engine/continueBotFlow.ts b/packages/bot-engine/continueBotFlow.ts index 1267c8a1c..d96edba40 100644 --- a/packages/bot-engine/continueBotFlow.ts +++ b/packages/bot-engine/continueBotFlow.ts @@ -345,7 +345,10 @@ const parseReply = } case InputBlockType.NUMBER: { if (!inputValue) return { status: 'fail' } - const isValid = validateNumber(inputValue, block.options) + const isValid = validateNumber(inputValue, { + options: block.options, + variables: state.typebotsQueue[0].typebot.variables, + }) if (!isValid) return { status: 'fail' } return { status: 'success', reply: parseNumber(inputValue) } }