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) setAnswer(label ?? value)
const isRetry = !isInputValid(value, block.type) const isRetry = !isInputValid(value, block.type)
if (!isRetry && addAnswer) if (!isRetry && addAnswer)
await addAnswer({ await addAnswer(typebot.variables)({
blockId: block.id, blockId: block.id,
groupId: block.groupId, groupId: block.groupId,
content: value, content: value,

View File

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