ENCOA-253, ENCOA-248, ENCOA-246

This commit is contained in:
Carlos-Mesquita
2024-12-02 17:16:12 +00:00
parent cd14ac537d
commit 490c5ad7d3
8 changed files with 90 additions and 51 deletions

View File

@@ -8,29 +8,38 @@ import { LevelExam, ListeningExam, ReadingExam, SpeakingExam, WritingExam } from
import { User } from "@/interfaces/user";
import { usePersistentExamStore } from "@/stores/exam";
import clsx from "clsx";
import { useEffect } from "react";
// TODO: perms
const Popout: React.FC<{ user: User }> = ({ user }) => {
const state = usePersistentExamStore((state) => state);
const { bgColor, exam, partIndex, setUserSolutions } = usePersistentExamStore();
usePersistentStorage(usePersistentExamStore);
useEffect(() => {
return () => {
setUserSolutions([]);
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [])
return (
<div className={`relative flex w-full min-h-screen p-4 shadow-md items-center rounded-2xl ${state.bgColor}`}>
<div className={`relative flex w-full min-h-screen p-4 shadow-md items-center rounded-2xl ${bgColor}`}>
<div className={clsx("relative flex p-20 justify-center flex-1")}>
{state.exam?.module == "level" && state.exam.parts && state.partIndex >= 0 &&
<Level exam={state.exam as LevelExam} preview={true} />
{exam?.module == "level" && exam.parts && partIndex >= 0 &&
<Level exam={exam as LevelExam} preview={true} />
}
{state.exam?.module == "writing" && state.exam.exercises && state.partIndex >= 0 &&
<Writing exam={state.exam as WritingExam} preview={true} />
{exam?.module == "writing" && exam.exercises && partIndex >= 0 &&
<Writing exam={exam as WritingExam} preview={true} />
}
{state.exam?.module == "reading" && state.exam.parts.length > 0 &&
<Reading exam={state.exam as ReadingExam} preview={true} />
{exam?.module == "reading" && exam.parts.length > 0 &&
<Reading exam={exam as ReadingExam} preview={true} />
}
{state.exam?.module == "listening" && state.exam.parts.length > 0 &&
<Listening exam={state.exam as ListeningExam} preview={true} />
{exam?.module == "listening" && exam.parts.length > 0 &&
<Listening exam={exam as ListeningExam} preview={true} />
}
{state.exam?.module == "speaking" && state.exam.exercises.length > 0 &&
<Speaking exam={state.exam as SpeakingExam} preview={true} />
{exam?.module == "speaking" && exam.exercises.length > 0 &&
<Speaking exam={exam as SpeakingExam} preview={true} />
}
</div>
</div>