Added the capability for users to resume their previously stopped sessions

This commit is contained in:
Tiago Ribeiro
2024-02-06 14:44:22 +00:00
parent c4b61c4787
commit 4ec439492e
7 changed files with 200 additions and 21 deletions

View File

@@ -59,12 +59,18 @@ export default function MultipleChoice({
onBack,
}: MultipleChoiceExercise & CommonProps) {
const [answers, setAnswers] = useState<{question: string; option: string}[]>(userSolutions);
const [questionIndex, setQuestionIndex] = useState(0);
const {questionIndex, setQuestionIndex} = useExamStore((state) => state);
const {userSolutions: storeUserSolutions, setUserSolutions} = useExamStore((state) => state);
const hasExamEnded = useExamStore((state) => state.hasExamEnded);
const scrollToTop = () => Array.from(document.getElementsByTagName("body")).forEach((body) => body.scrollTo(0, 0));
useEffect(() => {
setUserSolutions([...storeUserSolutions.filter((x) => x.exercise !== id), {exercise: id, solutions: answers, score: calculateScore(), type}]);
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [answers]);
useEffect(() => {
if (hasExamEnded) onNext({exercise: id, solutions: answers, score: calculateScore(), type});
// eslint-disable-next-line react-hooks/exhaustive-deps
@@ -93,7 +99,7 @@ export default function MultipleChoice({
if (questionIndex === questions.length - 1) {
onNext({exercise: id, solutions: answers, score: calculateScore(), type});
} else {
setQuestionIndex((prev) => prev + 1);
setQuestionIndex(questionIndex + 1);
}
scrollToTop();
@@ -103,7 +109,7 @@ export default function MultipleChoice({
if (questionIndex === 0) {
onBack({exercise: id, solutions: answers, score: calculateScore(), type});
} else {
setQuestionIndex((prev) => prev - 1);
setQuestionIndex(questionIndex - 1);
}
scrollToTop();