a simple web player for subsonic tinysub.devins.page
subsonic navidrome javascript
11
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix: group removal issue with current song index

+15 -13
+15 -13
src/lib/queue.svelte.ts
··· 75 75 }; 76 76 77 77 export const remove = () => { 78 - const ids = [...queue.sel].sort((a, b) => b - a), 79 - playing = queue.sel.includes(queue.pos), 80 - oldPos = queue.pos; 81 - ids.forEach((index) => { 82 - queue.tracks.splice(index, 1); 83 - if (queue.pos === index) queue.pos = -1; 84 - else if (queue.pos > index) queue.pos--; 85 - }); 78 + if (!queue.sel.length) return; 79 + 80 + const playing = queue.sel.includes(queue.pos), 81 + oldPos = queue.pos, 82 + removedBefore = queue.sel.filter((i) => i < oldPos).length; 83 + 84 + queue.tracks = queue.tracks.filter((_, i) => !queue.sel.includes(i)); 85 + 86 86 if (playing) { 87 87 if (queue.tracks.length) { 88 - const index = Math.min(oldPos, queue.tracks.length - 1); 89 - queue.pos = index; 90 - player.track = queue.tracks[index]; 91 - player.audio.src = api.stream(player.track.id); 92 - !player.paused ? player.audio.play() : (player.paused = true); 88 + queue.pos = Math.min(oldPos - removedBefore, queue.tracks.length - 1); 89 + const track = queue.tracks[queue.pos]; 90 + if (!player.paused) play(track); 91 + else restoreTrack(track, 0); 93 92 } else stop(); 93 + } else if (queue.pos !== -1) { 94 + queue.pos = oldPos - removedBefore; 94 95 } 96 + 95 97 clearSel(); 96 98 queue.version++; 97 99 };