import { Box, FormControl, FormControlLabel, Radio, Typography, useTheme, } from "@mui/material"; import { polyfillCountryFlagEmojis } from "country-flag-emoji-polyfill"; import { enqueueSnackbar } from "notistack"; import { useQuizViewStore } from "@stores/quizView"; import { sendAnswer } from "@api/quizRelase"; import { useQuizData } from "@contexts/QuizDataContext"; import { quizThemes } from "@utils/themes/Publication/themePublication"; import RadioCheck from "@ui_kit/RadioCheck"; import RadioIcon from "@ui_kit/RadioIcon"; import type { MouseEvent } from "react"; import type { QuestionVariant } from "@/model/questionTypes/shared"; import type { QuizQuestionEmoji } from "@model/questionTypes/emoji"; polyfillCountryFlagEmojis(); type EmojiVariantProps = { currentQuestion: QuizQuestionEmoji; variant: QuestionVariant; index: number; isSending: boolean; setIsSending: (isSending: boolean) => void; }; export const EmojiVariant = ({ currentQuestion, variant, index, isSending, setIsSending, }: EmojiVariantProps) => { const { quizId, settings, preview } = useQuizData(); const answers = useQuizViewStore((state) => state.answers); const { updateAnswer, deleteAnswer } = useQuizViewStore((state) => state); const theme = useTheme(); const { answer } = answers.find(({ questionId }) => questionId === currentQuestion.id) ?? {}; const onVariantClick = async (event: MouseEvent) => { event.preventDefault(); if (isSending) return; setIsSending(true); try { await sendAnswer({ questionId: currentQuestion.id, body: currentQuestion.content.variants[index].extendedText + " " + currentQuestion.content.variants[index].answer, qid: quizId, preview, }); updateAnswer( currentQuestion.id, currentQuestion.content.variants[index].id, currentQuestion.content.variants[index].points || 0 ); } catch (error) { enqueueSnackbar("ответ не был засчитан"); } if (answer === currentQuestion.content.variants[index].id) { deleteAnswer(currentQuestion.id); try { await sendAnswer({ questionId: currentQuestion.id, body: "", qid: quizId, preview, }); } catch (error) { enqueueSnackbar("ответ не был засчитан"); } } setIsSending(false); }; return ( {variant.extendedText && ( {variant.extendedText} )} } icon={} sx={{ position: "absolute", top: "-162px", right: "12px" }} /> } label={ {variant.answer} } /> ); };