diff --git a/ui/src/audioplayer/Player.jsx b/ui/src/audioplayer/Player.jsx index 03419add..7d086172 100644 --- a/ui/src/audioplayer/Player.jsx +++ b/ui/src/audioplayer/Player.jsx @@ -95,6 +95,19 @@ const Player = () => { } }, [audioInstance, context, gainNode, playerState, gainInfo]) + useEffect(() => { + const handleBeforeUnload = (e) => { + // Check there's a current track and is actually playing/not paused + if (playerState.current?.uuid && audioInstance && !audioInstance.paused) { + e.preventDefault() + e.returnValue = '' // Chrome requires returnValue to be set + } + } + + window.addEventListener('beforeunload', handleBeforeUnload) + return () => window.removeEventListener('beforeunload', handleBeforeUnload) + }, [playerState, audioInstance]) + const defaultOptions = useMemo( () => ({ theme: playerTheme,