import { useEffect } from "react";
import {
Box,
Typography,
RadioGroup,
FormGroup,
FormControlLabel,
Radio,
Checkbox,
TextField,
useTheme,
} from "@mui/material";
import {
useQuizViewStore,
updateAnswer,
deleteAnswer,
updateOwnVariant,
deleteOwnVariant,
} from "@stores/quizView/store";
import RadioCheck from "@ui_kit/RadioCheck";
import RadioIcon from "@ui_kit/RadioIcon";
import { CheckboxIcon } from "@icons/Checkbox";
import type { QuizQuestionVariant } from "../../../model/questionTypes/variant";
import type { QuestionVariant } from "../../../model/questionTypes/shared";
import { enqueueSnackbar } from "notistack";
import { sendAnswer } from "@api/quizRelase";
import { useQuestionsStore } from "@stores/quizData/store"
import { modes } from "../../../utils/themes/Publication/themePublication";
type VariantProps = {
stepNumber: number;
currentQuestion: QuizQuestionVariant;
};
type VariantItemProps = {
currentQuestion: QuizQuestionVariant;
variant: QuestionVariant;
answer: string | string[] | undefined;
index: number;
own?: boolean;
};
export const Variant = ({ currentQuestion }: VariantProps) => {
const { settings } = useQuestionsStore()
const { answers, ownVariants } = useQuizViewStore();
const mode = modes;
const { answer } =
answers.find(
({ questionId }) => questionId === currentQuestion.id
) ?? {};
const ownVariant = ownVariants.find(
(variant) => variant.id === currentQuestion.id
);
const Group = currentQuestion.content.multi ? FormGroup : RadioGroup;
useEffect(() => {
if (!ownVariant) {
updateOwnVariant(currentQuestion.id, "");
}
}, []);
const theme = useTheme();
return (
{currentQuestion.title}
answer === id
)}
sx={{
display: "flex",
flexWrap: "wrap",
flexDirection: "row",
justifyContent: "space-between",
flexBasis: "100%",
marginTop: "20px",
}}
>
{currentQuestion.content.variants.map((variant, index) => (
))}
{currentQuestion.content.own && ownVariant && (
)}
{currentQuestion.content.back && currentQuestion.content.back !== " " && (
)}
);
};
const VariantItem = ({
currentQuestion,
variant,
answer,
index,
own = false,
}: VariantItemProps) => {
const { settings } = useQuestionsStore()
const theme = useTheme();
const mode = modes;
return (
}
icon={}
/>
) :
//@ts-ignore
(} icon={} />
)
}
//@ts-ignore
label={own ? : variant.answer}
onClick={async (event) => {
event.preventDefault();
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],
//@ts-ignore
qid: settings.qid
})
updateAnswer(
currentQuestion.id,
currentAnswer.includes(variantId)
? currentAnswer?.filter((item) => item !== variantId)
: [...currentAnswer, variantId]
);
} catch (e) {
enqueueSnackbar("ответ не был засчитан")
}
return;
}
try {
await sendAnswer({
questionId: currentQuestion.id,
body: currentQuestion.content.variants[index].answer,
//@ts-ignore
qid: settings.qid
})
updateAnswer(currentQuestion.id, variantId);
} catch (e) {
enqueueSnackbar("ответ не был засчитан")
}
if (answer === variantId) {
try {
await sendAnswer({
questionId: currentQuestion.id,
body: "",
//@ts-ignore
qid: settings.qid
})
} catch (e) {
enqueueSnackbar("ответ не был засчитан")
}
deleteAnswer(currentQuestion.id);
}
}}
/>
);
};