Arreglar que suenen varios audios al mismo tiempo

This commit is contained in:
Cat /dev/Nulo 2021-10-15 14:11:21 -03:00
parent bf17617099
commit 61bd6fca46
1 changed files with 112 additions and 0 deletions

View File

@ -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();
}