🐛 (bot) Update result variables when overwritten by input
This commit is contained in:
@ -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,
|
||||
|
@ -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) => ({
|
||||
|
Reference in New Issue
Block a user