diff --git a/src/preload/index.d.ts b/src/preload/index.d.ts index 75446471c..a3abebf4f 100644 --- a/src/preload/index.d.ts +++ b/src/preload/index.d.ts @@ -6,8 +6,8 @@ declare global { interface Window { api: PreloadApi; electron: ElectronAPI; - queryLocalFonts?: () => Promise; LEGACY_AUTHENTICATION?: boolean; + queryLocalFonts?: () => Promise; SERVER_LOCK?: boolean; SERVER_NAME?: string; SERVER_TYPE?: ServerType; diff --git a/src/renderer/features/radio/hooks/use-radio-player.ts b/src/renderer/features/radio/hooks/use-radio-player.ts index 27b167baa..8a7156de8 100644 --- a/src/renderer/features/radio/hooks/use-radio-player.ts +++ b/src/renderer/features/radio/hooks/use-radio-player.ts @@ -1,3 +1,4 @@ +import console from 'console'; import IcecastMetadataStats from 'icecast-metadata-stats'; import isElectron from 'is-electron'; import { useEffect, useRef } from 'react'; @@ -134,6 +135,7 @@ export const useRadioAudioInstance = () => { const volume = usePlayerVolume(); const isMuted = usePlayerMuted(); const audioRef = useRef(null); + const activeAudioRef = useRef(null); const isUsingMpv = playbackType === PlayerType.LOCAL && mpvPlayer; // Handle mpv playback @@ -205,6 +207,7 @@ export const useRadioAudioInstance = () => { const audio = new Audio(currentStreamUrl); audioRef.current = audio; + activeAudioRef.current = audio; const linearVolume = volume / 100; const logVolume = convertToLogVolume(linearVolume); @@ -231,6 +234,10 @@ export const useRadioAudioInstance = () => { // Attempt to play audio.play().catch((error) => { + if (activeAudioRef.current !== audio) { + return; + } + console.error('Failed to play audio:', error); setIsPlaying(false); setCurrentStreamUrl(null); @@ -243,10 +250,14 @@ export const useRadioAudioInstance = () => { audioRef.current.src = ''; audioRef.current = null; } + activeAudioRef.current = null; } return () => { if (audioRef.current) { + if (activeAudioRef.current === audioRef.current) { + activeAudioRef.current = null; + } audioRef.current.pause(); audioRef.current.src = ''; audioRef.current = null;