import { Checkbox, FormControlLabel, TextField as MuiTextField, Radio, TextFieldProps, useTheme, } from "@mui/material"; import { enqueueSnackbar } from "notistack"; import { sendAnswer } from "@api/quizRelase"; import { useQuizViewStore } from "@stores/quizView"; import { useQuizData } from "@contexts/QuizDataContext"; import { quizThemes } from "@utils/themes/Publication/themePublication"; import { CheckboxIcon } from "@icons/Checkbox"; import RadioCheck from "@ui_kit/RadioCheck"; import RadioIcon from "@ui_kit/RadioIcon"; import type { FC, MouseEvent } from "react"; import type { QuestionVariant } from "@model/questionTypes/shared"; import type { QuizQuestionVariant } from "@model/questionTypes/variant"; const TextField = MuiTextField as unknown as FC; export const VariantItem = ({ currentQuestion, variant, answer, index, own = false, isSending, setIsSending, }: { currentQuestion: QuizQuestionVariant; variant: QuestionVariant; answer: string | string[] | undefined; index: number; own?: boolean; isSending: boolean; setIsSending: (a: boolean) => void; }) => { const { settings, quizId, preview } = useQuizData(); const theme = useTheme(); const { updateAnswer, deleteAnswer } = useQuizViewStore((state) => state); const sendVariant = async (event: MouseEvent) => { event.preventDefault(); if (isSending) { return; } setIsSending(true); const variantId = currentQuestion.content.variants[index].id; if (currentQuestion.content.multi) { const currentAnswer = typeof answer !== "string" ? answer || [] : []; try { await sendAnswer({ questionId: currentQuestion.id, body: currentAnswer.includes(variantId) ? currentAnswer?.filter((item) => item !== variantId) : [...currentAnswer, variantId], qid: quizId, preview, }); updateAnswer( currentQuestion.id, currentAnswer.includes(variantId) ? currentAnswer?.filter((item) => item !== variantId) : [...currentAnswer, variantId], currentQuestion.content.variants[index].points || 0 ); } catch (error) { console.error(error); enqueueSnackbar("ответ не был засчитан"); } setIsSending(false); return; } try { await sendAnswer({ questionId: currentQuestion.id, body: currentQuestion.content.variants[index].answer, qid: quizId, preview, }); updateAnswer( currentQuestion.id, variantId, answer === variantId ? 0 : currentQuestion.content.variants[index].points || 0 ); } catch (error) { console.error(error); enqueueSnackbar("ответ не был засчитан"); } if (answer === variantId) { try { await sendAnswer({ questionId: currentQuestion.id, body: "", qid: quizId, preview, }); } catch (error) { console.error(error); enqueueSnackbar("ответ не был засчитан"); } deleteAnswer(currentQuestion.id); } setIsSending(false); }; return ( } icon={} /> ) : ( } icon={} /> ) } label={own ? : variant.answer} onClick={sendVariant} /> ); };