mirror of
https://github.com/hydralauncher/hydra.git
synced 2025-03-09 15:40:26 +00:00
fix: audio only playing once
This commit is contained in:
parent
73eb7ac637
commit
ee73c04b12
1 changed files with 7 additions and 8 deletions
|
@ -1,4 +1,4 @@
|
||||||
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
import { useCallback, useEffect, useRef, useState } from "react";
|
||||||
import achievementSound from "@renderer/assets/audio/achievement.wav";
|
import achievementSound from "@renderer/assets/audio/achievement.wav";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import * as styles from "./achievement-notification.css";
|
import * as styles from "./achievement-notification.css";
|
||||||
|
@ -24,11 +24,10 @@ export function AchievementNotification() {
|
||||||
const closingAnimation = useRef(-1);
|
const closingAnimation = useRef(-1);
|
||||||
const visibleAnimation = useRef(-1);
|
const visibleAnimation = useRef(-1);
|
||||||
|
|
||||||
const audio = useMemo(() => {
|
const playAudio = useCallback(() => {
|
||||||
const audio = new Audio(achievementSound);
|
const audio = new Audio(achievementSound);
|
||||||
audio.volume = 0.2;
|
audio.volume = 0.2;
|
||||||
audio.preload = "auto";
|
audio.play();
|
||||||
return audio;
|
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
@ -47,14 +46,14 @@ export function AchievementNotification() {
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
|
|
||||||
audio.play();
|
playAudio();
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
unsubscribe();
|
unsubscribe();
|
||||||
};
|
};
|
||||||
}, [audio]);
|
}, [playAudio]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const unsubscribe = window.electron.onAchievementUnlocked(
|
const unsubscribe = window.electron.onAchievementUnlocked(
|
||||||
|
@ -63,14 +62,14 @@ export function AchievementNotification() {
|
||||||
|
|
||||||
setAchievements((ach) => ach.concat(achievements));
|
setAchievements((ach) => ach.concat(achievements));
|
||||||
|
|
||||||
audio.play();
|
playAudio();
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
unsubscribe();
|
unsubscribe();
|
||||||
};
|
};
|
||||||
}, [audio]);
|
}, [playAudio]);
|
||||||
|
|
||||||
const hasAchievementsPending = achievements.length > 0;
|
const hasAchievementsPending = achievements.length > 0;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue