import { useState } from "react"; import { Box, Button, Typography } from "@mui/material"; import { arraysEqual } from "../../utils/functions"; interface Variant { id: number; text: string; } interface LearningAnswersProps { variants?: Variant[]; correctAnswers: number[] | string[]; type: "single" | "multiple" | "text"; userAnswers?: number[]; } const LearningAnswers = ({ variants = [], correctAnswers = [], type, userAnswers, }: LearningAnswersProps) => { const [showAnswer, setShowAnswer] = useState(false); const hasAnswered = userAnswers !== null && userAnswers !== undefined; const isEmptyAnswer = hasAnswered && userAnswers.length === 0; const isCorrect = hasAnswered ? arraysEqual(correctAnswers as number[], userAnswers as number[]) : false; const normalizedUserAnswers = userAnswers ?? []; const getUserAnswerText = () => { if (!normalizedUserAnswers.length) return ""; const selectedVariants = variants.filter((v) => normalizedUserAnswers.includes(v.id) ); return selectedVariants.map((v) => v.text).join(", "); }; if (type === "text") { return ( {hasAnswered ? ( isEmptyAnswer ? ( You didn’t answer ) : ( Your answer: {userAnswers.join(", ")} ) ) : null} {(hasAnswered || showAnswer) && ( Correct answer: {correctAnswers.join(", ")} )} {!hasAnswered && ( )} ); } return ( {hasAnswered ? ( isEmptyAnswer ? ( You didn’t answer ) : ( Your answer: {getUserAnswerText()} —{" "} {isCorrect ? "Correct" : "Incorrect"} ) ) : null} {variants.map((variant) => ( {variant.text} ))} {!hasAnswered && ( )} ); }; export default LearningAnswers;