diff --git a/patches/0008-use-audio-hook-in-selection-questions.diff b/patches/0008-use-audio-hook-in-selection-questions.diff new file mode 100644 index 0000000..52ecc71 --- /dev/null +++ b/patches/0008-use-audio-hook-in-selection-questions.diff @@ -0,0 +1,112 @@ +diff -Naur orig/components/Lesson/LessonExercise/MultiSelectionExercise/MultiSelectionQuestionRow.jsx parcheado/components/Lesson/LessonExercise/MultiSelectionExercise/MultiSelectionQuestionRow.jsx +--- orig/components/Lesson/LessonExercise/MultiSelectionExercise/MultiSelectionQuestionRow.jsx 2021-10-13 10:10:23.486696645 -0300 ++++ parcheado/components/Lesson/LessonExercise/MultiSelectionExercise/MultiSelectionQuestionRow.jsx 2021-10-15 13:48:08.065899802 -0300 +@@ -49,7 +49,10 @@ + achievableScore, + }); + +- const { playWrongDefaultAudioFeedBack, playCorrectDefaultAudioFeedBack } = useAudio(); ++ const { ++ playAudio, addRef: addAudioRef, ++ playWrongDefaultAudioFeedBack, playCorrectDefaultAudioFeedBack, ++ } = useAudio(); + const correctAnswerAudioRef = useRef(); + const answersRef = useRef(answers); + const isMountedRef = useIsMountedRef(); +@@ -57,7 +60,8 @@ + useEffect(() => { + // eslint-disable-next-line fp/no-mutation + answersRef.current = answers; +- }); ++ addAudioRef(correctAnswerAudioRef); ++ }, [addAudioRef]); + + const selectOrUnselectAnswer = chosenAnswerIndex => { + const updatedAnswers = answers.map((answer, index) => { +@@ -98,9 +102,9 @@ + return updatedAnswers; + }; + +- const playSuccessAudio = () => { ++ const playSuccessAudio = e => { + if (correctAnswerAudioUrl) { +- correctAnswerAudioRef.current.play(); ++ playAudio(e, correctAnswerAudioRef); + } else { + playCorrectDefaultAudioFeedBack(); + } +@@ -120,16 +124,16 @@ + selectOrUnselectAnswer(chosenAnswerIndex); + }; + +- const onHandleSolveButtonClicked = () => { ++ const onHandleSolveButtonClicked = e => { + handleSolved(); +- playSuccessAudio(); ++ playSuccessAudio(e); + updateAnswers(answers, answer => + answer.isCorrect ? ANSWER_STATE.SOLVED : ANSWER_STATE.INITIAL, + ); + setAnswersFrozen(true); + }; + +- const onHandleCheckButtonClicked = () => { ++ const onHandleCheckButtonClicked = e => { + const checkedAnswers = updateAnswers( + answers, + answer => (answer.isCorrect ? ANSWER_STATE.CORRECT : ANSWER_STATE.WRONG), +@@ -138,7 +142,7 @@ + + if (isSolvedCorrectly(checkedAnswers)) { + handleCorrectAnswer(); +- playSuccessAudio(); ++ playSuccessAudio(e); + setAnswersFrozen(true); + } else { + handleWrongAnswer(); +diff -Naur orig/components/Lesson/LessonExercise/SingleSelectionExercise/SingleSelectionQuestionRow/SingleSelectionQuestionRow.jsx parcheado/components/Lesson/LessonExercise/SingleSelectionExercise/SingleSelectionQuestionRow/SingleSelectionQuestionRow.jsx +--- orig/components/Lesson/LessonExercise/SingleSelectionExercise/SingleSelectionQuestionRow/SingleSelectionQuestionRow.jsx 2021-10-13 10:10:23.446697050 -0300 ++++ parcheado/components/Lesson/LessonExercise/SingleSelectionExercise/SingleSelectionQuestionRow/SingleSelectionQuestionRow.jsx 2021-10-15 13:44:06.353710138 -0300 +@@ -35,7 +35,10 @@ + }; + }), + ); +- const { playWrongDefaultAudioFeedBack, playCorrectDefaultAudioFeedBack } = useAudio(); ++ const { ++ playAudio, addRef: addAudioRef, ++ playWrongDefaultAudioFeedBack, playCorrectDefaultAudioFeedBack, ++ } = useAudio(); + const correctAnswerAudioRef = useRef(); + const answersRef = useRef(answers); + const { handleCorrectAnswer, handleWrongAnswer, isFromPlacementCourse } = useInquiryHandling({ +@@ -47,7 +50,8 @@ + useEffect(() => { + // eslint-disable-next-line fp/no-mutation + answersRef.current = answers; +- }); ++ addAudioRef(correctAnswerAudioRef); ++ }, [addAudioRef]); + + const getAnswerState = ({ index, chosenAnswerIndex, selectCurrentAnswer, answer }) => { + const { answerState, isCorrect } = answer; +@@ -80,6 +84,11 @@ + e.preventDefault(); + answersRefArray[chosenAnswerIndex].blur(); + if (answersFrozen) { ++ if (correctAnswerAudioUrl) { ++ playAudio(e, correctAnswerAudioRef); ++ } else { ++ playCorrectDefaultAudioFeedBack(); ++ } + return; + } + updateAnswers(chosenAnswerIndex, true); +@@ -88,7 +97,7 @@ + handleCorrectAnswer(); + setAnswersFrozen(true); + if (correctAnswerAudioUrl) { +- correctAnswerAudioRef.current.play(); ++ playAudio(e, correctAnswerAudioRef); + } else { + playCorrectDefaultAudioFeedBack(); + }