From 53dbf99fba82a91ac0073015ae9b95fae2ebca22 Mon Sep 17 00:00:00 2001 From: Tiago Ribeiro Date: Tue, 18 Jun 2024 22:16:31 +0100 Subject: [PATCH] Fixed some more issues with the Speaking --- src/components/Exercises/InteractiveSpeaking.tsx | 3 +++ src/components/Exercises/Speaking.tsx | 10 +++------- src/exams/Speaking.tsx | 10 +++++++++- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/components/Exercises/InteractiveSpeaking.tsx b/src/components/Exercises/InteractiveSpeaking.tsx index b1a02924..f397dee1 100644 --- a/src/components/Exercises/InteractiveSpeaking.tsx +++ b/src/components/Exercises/InteractiveSpeaking.tsx @@ -60,13 +60,16 @@ export default function InteractiveSpeaking({ setIsLoading(true); const answer = await saveAnswer(questionIndex); + console.log(questionIndex + 1 < prompts.length, questionIndex, prompts.length); if (questionIndex + 1 < prompts.length) { setQuestionIndex(questionIndex + 1); setIsLoading(false); return; } + setIsLoading(false); + setQuestionIndex(0); onNext({ exercise: id, diff --git a/src/components/Exercises/Speaking.tsx b/src/components/Exercises/Speaking.tsx index 11786660..4a35458a 100644 --- a/src/components/Exercises/Speaking.tsx +++ b/src/components/Exercises/Speaking.tsx @@ -95,7 +95,7 @@ export default function Speaking({id, title, text, video_url, type, prompts, suf return (
- setIsPromptsModalOpen(false)}> + setIsPromptsModalOpen(false)}>
{prompts.map((x, index) => ( @@ -126,7 +126,7 @@ export default function Speaking({id, title, text, video_url, type, prompts, suf )}
-
+
{video_url && (
)} - {prompts && prompts.length > 0 && ( -
- -
- )} + {prompts && prompts.length > 0 && }
diff --git a/src/exams/Speaking.tsx b/src/exams/Speaking.tsx index 7d6271db..81a85e21 100644 --- a/src/exams/Speaking.tsx +++ b/src/exams/Speaking.tsx @@ -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) acc + curr.amount, 0)} module="speaking" totalExercises={countExercises(exam.exercises)} disableTimer={showSolutions}