import React, { useState, useContext, useEffect } from "react"; import { useNavigate, useParams } from "react-router-dom"; import { useCookies } from "react-cookie"; import classes from "../assets/styles/viewForm.module.scss"; import { FormsData, TypeAnswerData, answersData, UserData } from "../context"; import GeneratingFormFields from "../components/GeneratingFormFields.jsx"; import MyButton from "../components/MyButton.jsx"; import { listFormBlockByTokenApi, saveAnswersApi } from "../hooks/api/formApi.js"; import { responseDataToListBlock } from "../hooks/sundry/parseListBlock.js"; const ViewForm = () => { const navigate = useNavigate(); const { formId } = useParams(); const {user, setUser} = useContext(UserData); const {forms, setForms} = useContext(FormsData); const {answersList, setAnswersList} = useContext(answersData); const {listTypeAnswer, setListTypeAnswer} = useContext(TypeAnswerData); const [cookies, setCookies, __] = useCookies(["user"]); const [questions, setQuestions] = useState([]); const [answers, setAnswers] = useState([]); const [responseStatus, setResponseStatus] = useState(200); useEffect(() => { async function getForm() { const responseBlocks = await listFormBlockByTokenApi(cookies.token, formId); if (responseBlocks.status === 200 && responseBlocks.data.blocks) { const listBlocks = responseDataToListBlock(responseBlocks.data.blocks); setQuestions(listBlocks); setAnswers(listBlocks.map(item => ( {id: item.id, answer: []} ))); } else { setResponseStatus(responseBlocks.status) } }; getForm() }, []); function updateAnswersForm(value, id) { setAnswers( answers.map((item, i) => { if (id === i) { item.answer = value; } return item }) ) }; async function saveAnswers() { console.log(answers) const response = await saveAnswersApi(cookies.token, formId, answers); if (response.status === 200) { setAnswersList([...answersList, { id: formId, user: user.login, answers: answers }]) setAnswers([]); navigate("/forms"); } } return (
{questions.length ?
#{formId}
{ setAnswers([]); navigate("/"); }}/>
:
{responseStatus === 200 ? `Форма с идентификатором #${formId} пустая.` : `Форма с идентификатором #${formId} отсутствует.`}
}
) } export default ViewForm;