diff --git a/src/renderer/features/player/components/audio-players.tsx b/src/renderer/features/player/components/audio-players.tsx index b5fb3096d..ab32ca391 100644 --- a/src/renderer/features/player/components/audio-players.tsx +++ b/src/renderer/features/player/components/audio-players.tsx @@ -283,6 +283,24 @@ const AudioPlayersContent = ({ // eslint-disable-next-line react-hooks/exhaustive-deps }, []); + useEffect(() => { + if (!audioContext?.context) return undefined; + const ctx = audioContext.context; + if (ctx.state === 'running') return undefined; + + const unlock = () => { + ctx.resume().catch(() => {}); + }; + + document.addEventListener('pointerdown', unlock, { capture: true, once: true }); + document.addEventListener('keydown', unlock, { capture: true, once: true }); + + return () => { + document.removeEventListener('pointerdown', unlock, { capture: true }); + document.removeEventListener('keydown', unlock, { capture: true }); + }; + }, [audioContext]); + useEffect(() => { // Not standard, just used in chromium-based browsers. See // https://developer.chrome.com/blog/audiocontext-setsinkid/.