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