From 45c1b2b60343578ba5b90d9d503ba6452e0d9beb Mon Sep 17 00:00:00 2001 From: Agahnim Date: Mon, 23 Mar 2026 13:31:52 +0100 Subject: [PATCH] miniplayer: fix songs pausing after previous one ends --- static/miniplayer.js | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/static/miniplayer.js b/static/miniplayer.js index 43b2a3f..5ec159e 100644 --- a/static/miniplayer.js +++ b/static/miniplayer.js @@ -15,6 +15,8 @@ function initMiniPlayer() { const trackTitleEl = player.querySelector("track-title"); const trackArtistEl = player.querySelector("track-artist"); + + let isTransitioning = false; let currentTrackIndex = 0; let isPlaying = false; const sources = audio.querySelectorAll("source"); @@ -48,13 +50,25 @@ function initMiniPlayer() { const loadTrack = (index) => { currentTrackIndex = index; + + const wasPlaying = isPlaying || isTransitioning; + + isTransitioning = false; + audio.src = tracks[index].src; audio.currentTime = 0; + progressInput.value = 0; currentTimeEl.textContent = "00:00"; + if (trackTitleEl) trackTitleEl.textContent = tracks[index].title; if (trackArtistEl) trackArtistEl.textContent = tracks[index].artist; - if (isPlaying) audio.play(); + + if (wasPlaying) { + audio.addEventListener("loadeddata", () => { + audio.play(); + }, { once: true }); + } }; const handlePlayPause = () => { @@ -73,6 +87,7 @@ function initMiniPlayer() { }; const handleNext = () => { + isTransitioning = true; const newIndex = currentTrackIndex === tracks.length - 1 ? 0 : currentTrackIndex + 1; loadTrack(newIndex); }; @@ -111,6 +126,8 @@ function initMiniPlayer() { audio.addEventListener("pause", () => { + if (isTransitioning) return; + isPlaying = false; updatePlayState(); });