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;