2
0

🐛 (number) Fix number input validation with variables

This commit is contained in:
Baptiste Arnaud
2023-10-30 16:45:32 +01:00
parent 3e02436d30
commit 7586ecaf13
2 changed files with 29 additions and 7 deletions

View File

@ -1,10 +1,29 @@
import { isNotDefined } from '@typebot.io/lib' 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 = ( export const validateNumber = (
inputValue: string, inputValue: string,
options: NumberInputBlock['options'] {
) => options,
inputValue !== '' && variables,
(isNotDefined(options?.min) || Number(inputValue) >= Number(options.min)) && }: {
(isNotDefined(options?.max) || Number(inputValue) <= Number(options.max)) 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)
)
}

View File

@ -345,7 +345,10 @@ const parseReply =
} }
case InputBlockType.NUMBER: { case InputBlockType.NUMBER: {
if (!inputValue) return { status: 'fail' } 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' } if (!isValid) return { status: 'fail' }
return { status: 'success', reply: parseNumber(inputValue) } return { status: 'success', reply: parseNumber(inputValue) }
} }