2
0

feat(engine): Add {{state}} to body to get form state

This commit is contained in:
Baptiste Arnaud
2022-02-22 06:55:15 +01:00
parent 1b900b3f5d
commit d0994e6577
8 changed files with 89 additions and 19 deletions

View File

@ -1,24 +1,43 @@
import { Answer } from 'models'
import { Answer, ResultWithAnswers, VariableWithValue } from 'models'
import React, { createContext, ReactNode, useContext, useState } from 'react'
export type ResultValues = Pick<
ResultWithAnswers,
'answers' | 'createdAt' | 'prefilledVariables'
>
const answersContext = createContext<{
answers: Answer[]
resultValues: ResultValues
addAnswer: (answer: Answer) => void
setPrefilledVariables: (variables: VariableWithValue[]) => void
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
//@ts-ignore
}>({})
export const AnswersContext = ({ children }: { children: ReactNode }) => {
const [answers, setAnswers] = useState<Answer[]>([])
const [resultValues, setResultValues] = useState<ResultValues>({
answers: [],
prefilledVariables: [],
createdAt: new Date().toISOString(),
})
const addAnswer = (answer: Answer) =>
setAnswers((answers) => [...answers, answer])
setResultValues((resultValues) => ({
...resultValues,
answers: [...resultValues.answers, answer],
}))
const setPrefilledVariables = (variables: VariableWithValue[]) =>
setResultValues((resultValues) => ({
...resultValues,
prefilledVariables: variables,
}))
return (
<answersContext.Provider
value={{
answers,
resultValues,
addAnswer,
setPrefilledVariables,
}}
>
{children}