Fixed some more issues with the Speaking

This commit is contained in:
Tiago Ribeiro
2024-06-18 22:16:31 +01:00
parent cb49e15cb0
commit 53dbf99fba
3 changed files with 15 additions and 8 deletions

View File

@@ -20,6 +20,8 @@ interface Props {
}
export default function Speaking({exam, showSolutions = false, onFinish}: Props) {
const [speakingPromptsDone, setSpeakingPromptsDone] = useState<{id: string; amount: number}[]>([]);
const {userSolutions, setUserSolutions} = useExamStore((state) => state);
const {questionIndex, setQuestionIndex} = useExamStore((state) => state);
const {hasExamEnded, setHasExamEnded} = useExamStore((state) => state);
@@ -33,6 +35,12 @@ export default function Speaking({exam, showSolutions = false, onFinish}: Props)
setUserSolutions([...userSolutions.filter((x) => x.exercise !== solution.exercise), {...solution, module: "speaking", exam: exam.id}]);
}
if (questionIndex > 0) {
const exercise = getExercise();
setSpeakingPromptsDone((prev) => [...prev.filter((x) => x.id !== exercise.id), {id: exercise.id, amount: questionIndex}]);
}
setQuestionIndex(0);
if (exerciseIndex + 1 < exam.exercises.length) {
setExerciseIndex(exerciseIndex + 1);
return;
@@ -75,7 +83,7 @@ export default function Speaking({exam, showSolutions = false, onFinish}: Props)
<ModuleTitle
label={convertCamelCaseToReadable(exam.exercises[exerciseIndex].type)}
minTimer={exam.minTimer}
exerciseIndex={exerciseIndex + 1 + questionIndex}
exerciseIndex={exerciseIndex + 1 + questionIndex + speakingPromptsDone.reduce((acc, curr) => acc + curr.amount, 0)}
module="speaking"
totalExercises={countExercises(exam.exercises)}
disableTimer={showSolutions}