fix(MoodMusic): resolve exhaustive-deps so CI build passes; behaviour unchanged
Some checks are pending
CI / build-and-test (push) Waiting to run
Some checks are pending
CI / build-and-test (push) Waiting to run
This commit is contained in:
@@ -40,12 +40,11 @@ export default function MoodMusic() {
|
|||||||
});
|
});
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
// Create audio element on mount
|
// Create audio element on mount (volume handled by separate effect)
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const audio = new Audio();
|
const audio = new Audio();
|
||||||
audio.preload = 'auto';
|
audio.preload = 'auto';
|
||||||
audio.loop = true;
|
audio.loop = true;
|
||||||
audio.volume = volume;
|
|
||||||
audioRef.current = audio;
|
audioRef.current = audio;
|
||||||
return () => {
|
return () => {
|
||||||
if (fadeTimeoutRef.current) clearTimeout(fadeTimeoutRef.current);
|
if (fadeTimeoutRef.current) clearTimeout(fadeTimeoutRef.current);
|
||||||
@@ -54,13 +53,22 @@ export default function MoodMusic() {
|
|||||||
};
|
};
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
// Update volume when it changes
|
// Set initial volume on mount, then update whenever volume changes
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (audioRef.current) {
|
if (audioRef.current) {
|
||||||
audioRef.current.volume = volume;
|
audioRef.current.volume = volume;
|
||||||
}
|
}
|
||||||
}, [volume]);
|
}, [volume]);
|
||||||
|
|
||||||
|
const stopPlayback = useCallback(() => {
|
||||||
|
if (audioRef.current) {
|
||||||
|
audioRef.current.pause();
|
||||||
|
audioRef.current.src = '';
|
||||||
|
}
|
||||||
|
setActiveMood(null);
|
||||||
|
setNowPlaying('');
|
||||||
|
}, []);
|
||||||
|
|
||||||
const playMood = useCallback((track) => {
|
const playMood = useCallback((track) => {
|
||||||
if (!track || !audioRef.current) return;
|
if (!track || !audioRef.current) return;
|
||||||
|
|
||||||
@@ -111,16 +119,7 @@ export default function MoodMusic() {
|
|||||||
setActiveMood(track.mood);
|
setActiveMood(track.mood);
|
||||||
setNowPlaying(track.title);
|
setNowPlaying(track.title);
|
||||||
}
|
}
|
||||||
}, [activeMood, volume]);
|
}, [activeMood, volume, stopPlayback]);
|
||||||
|
|
||||||
const stopPlayback = useCallback(() => {
|
|
||||||
if (audioRef.current) {
|
|
||||||
audioRef.current.pause();
|
|
||||||
audioRef.current.src = '';
|
|
||||||
}
|
|
||||||
setActiveMood(null);
|
|
||||||
setNowPlaying('');
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
if (loading) {
|
if (loading) {
|
||||||
return (
|
return (
|
||||||
|
|||||||
Reference in New Issue
Block a user