From 43d618551cf361dd746975e8db5baf2dbc29bee3 Mon Sep 17 00:00:00 2001 From: intergrav Date: Thu, 6 Aug 2026 16:08:04 -0400 Subject: [PATCH] chore: log failed playback --- src/lib/offline/offlineManager.svelte.ts | 7 +++++++ src/lib/player.svelte.ts | 17 ++++++++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/lib/offline/offlineManager.svelte.ts b/src/lib/offline/offlineManager.svelte.ts index 2205042..85d3474 100644 --- a/src/lib/offline/offlineManager.svelte.ts +++ b/src/lib/offline/offlineManager.svelte.ts @@ -296,6 +296,13 @@ class OfflineManager { return cached; } + if ( + this.downloadedSongIds.size > 0 && + !this.downloadedSongIds.has(song.id) + ) { + return null; + } + try { const key = `song_${song.id}`; const blob = await storage.readBlob(key); diff --git a/src/lib/player.svelte.ts b/src/lib/player.svelte.ts index a44177d..ec6202e 100644 --- a/src/lib/player.svelte.ts +++ b/src/lib/player.svelte.ts @@ -96,6 +96,12 @@ player.audio.onplaying = () => { if (settings.visualizer) visualizer.refresh(); }; +const resumePlayback = () => { + void player.audio.play().catch((err) => { + console.warn("failed to resume playback:", err); + }); +}; + const streamUrl = (id: string, timeOffset = 0) => { if (!settings.transcoding) return api.stream(id, {}); @@ -144,6 +150,7 @@ const getCaptureStream = () => { }; let vizSource: MediaStreamAudioSourceNode | null = null; +let vizStream: MediaStream | null = null; export const visualizer = $state({ context: null as AudioContext | null, @@ -153,8 +160,12 @@ export const visualizer = $state({ vizSource?.disconnect(); this.analyser?.disconnect(); + vizStream?.getTracks().forEach((track) => { + track.stop(); + }); const stream = getCaptureStream(); + vizStream = stream; if (!stream) return; vizSource = this.context.createMediaStreamSource(stream); @@ -227,7 +238,7 @@ export const load = async (song: Song, time = 0, autoplay = false) => { player.audio.load(); if (autoplay) { - player.audio.play(); + resumePlayback(); } player.paused = !autoplay; }; @@ -236,7 +247,7 @@ export const play = (song: Song) => { if (player.track?.id === song.id) { if (isRadio(song)) return load(song, 0, true); seek(0); - player.audio.play(); + resumePlayback(); } else load(song, 0, true); }; @@ -244,7 +255,7 @@ export const toggle = () => { if (!player.track) return queue.tracks.length > 0 && goto(queue.pos === -1 ? 0 : queue.pos); if (player.paused) { - player.audio.play(); + resumePlayback(); } else { player.audio.pause(); } -- 2.51.2