From 28aed104f61d09f5c5a58231829d707874794fbe Mon Sep 17 00:00:00 2001 From: Yuri Tatishchev Date: Fri, 6 Feb 2026 02:15:11 -0800 Subject: [PATCH] global player pt. 9 fix play track pt. 2 --- src/lib/components/GlobalPlayer.svelte | 18 ++++++++++++++++++ src/lib/components/SongEntry.svelte | 7 +++++++ 2 files changed, 25 insertions(+) diff --git a/src/lib/components/GlobalPlayer.svelte b/src/lib/components/GlobalPlayer.svelte index e503262..e49db8f 100644 --- a/src/lib/components/GlobalPlayer.svelte +++ b/src/lib/components/GlobalPlayer.svelte @@ -171,6 +171,7 @@ try { await el.play(); } catch { + // Autoplay may be blocked; bail out quietly. return; } @@ -278,6 +279,23 @@ snap = s; }); + // Listen for play requests dispatched from anywhere (e.g. SongEntry buttons). + // This ensures "Play" behaves like Next/Prev: it will reliably sync the new + // source and start playback. + if (browser) { + const onAutoplayRequest = () => { + void syncAndAutoplay(); + }; + window.addEventListener("amqtrain:player:autoplay", onAutoplayRequest); + + return () => { + window.removeEventListener( + "amqtrain:player:autoplay", + onAutoplayRequest, + ); + }; + } + media.setPlaybackState("paused"); }); diff --git a/src/lib/components/SongEntry.svelte b/src/lib/components/SongEntry.svelte index e6c977f..8163d99 100644 --- a/src/lib/components/SongEntry.svelte +++ b/src/lib/components/SongEntry.svelte @@ -54,6 +54,11 @@ ); const isQueued = $derived(hasTrack(annSongId)); + + function requestGlobalAutoplay() { + if (typeof window === "undefined") return; + window.dispatchEvent(new CustomEvent("amqtrain:player:autoplay")); + }
@@ -77,6 +82,7 @@ onclick={() => { if (!track) return; play(track); + requestGlobalAutoplay(); }} > Play @@ -89,6 +95,7 @@ onclick={() => { if (!track) return; playNext(track); + requestGlobalAutoplay(); }} > Play next