2
0

🐛 (bot) Update result variables when overwritten by input

This commit is contained in:
Baptiste Arnaud
2022-12-28 16:07:07 +01:00
parent 5b061280dd
commit f49a3013d4
2 changed files with 24 additions and 8 deletions

View File

@ -52,7 +52,7 @@ export const InputChatBlock = ({
setAnswer(label ?? value)
const isRetry = !isInputValid(value, block.type)
if (!isRetry && addAnswer)
await addAnswer({
await addAnswer(typebot.variables)({
blockId: block.id,
groupId: block.groupId,
content: value,

View File

@ -2,6 +2,7 @@ import { safeStringify } from '@/features/variables'
import {
AnswerInput,
ResultValues,
Variable,
VariableWithUnknowValue,
VariableWithValue,
} from 'models'
@ -12,6 +13,8 @@ const answersContext = createContext<{
resultId?: string
resultValues: ResultValues
addAnswer: (
existingVariables: Variable[]
) => (
answer: AnswerInput & { uploadedFiles: boolean }
) => Promise<void> | undefined
updateVariables: (variables: VariableWithUnknowValue[]) => void
@ -38,13 +41,26 @@ export const AnswersProvider = ({
createdAt: new Date(),
})
const addAnswer = (answer: AnswerInput & { uploadedFiles: boolean }) => {
setResultValues((resultValues) => ({
...resultValues,
answers: [...resultValues.answers, answer],
}))
return onNewAnswer && onNewAnswer(answer)
}
const addAnswer =
(existingVariables: Variable[]) =>
(answer: AnswerInput & { uploadedFiles: boolean }) => {
if (answer.variableId)
updateVariables([
{
id: answer.variableId,
value: answer.content,
name:
existingVariables.find(
(existingVariable) => existingVariable.id === answer.variableId
)?.name ?? '',
},
])
setResultValues((resultValues) => ({
...resultValues,
answers: [...resultValues.answers, answer],
}))
return onNewAnswer && onNewAnswer(answer)
}
const updateVariables = (newVariables: VariableWithUnknowValue[]) => {
const serializedNewVariables = newVariables.map((variable) => ({