diff --git a/index.html b/index.html index 0c9d41e..4b4b5f0 100644 --- a/index.html +++ b/index.html @@ -1041,33 +1041,30 @@ function isolateTracks() { } function deleteTrack() { if (selectedIndices.size === 0) return; + const sortedSel = [...selectedIndices].sort((a, b) => a - b); + const willDeleteCurrent = selectedIndices.has(currentIndex); if (selectedIndices.size === tracks.length) { - tracks.forEach(t => URL.revokeObjectURL(t.url)); + for (const idx of sortedSel) { + if (idx !== currentIndex) URL.revokeObjectURL(tracks[idx].url); + } tracks = []; currentIndex = -1; selectedIndices.clear(); renderTracks(); return; } - const sortedSel = [...selectedIndices].sort((a, b) => a - b); - const willDeleteCurrent = selectedIndices.has(currentIndex); - const playingTrack = currentIndex >= 0 ? tracks[currentIndex] : null; - for (const idx of sortedSel) URL.revokeObjectURL(tracks[idx].url); + for (const idx of sortedSel) { + if (idx !== currentIndex) URL.revokeObjectURL(tracks[idx].url); + } for (let j = sortedSel.length - 1; j >= 0; j--) tracks.splice(sortedSel[j], 1); selectedIndices.clear(); if (willDeleteCurrent) { - if (tracks.length > 0) { - currentIndex = Math.min(sortedSel[0], tracks.length - 1); - playTrack(currentIndex); - } else { - currentIndex = -1; - renderTracks(); - } + currentIndex = -1; } else { const removedBefore = sortedSel.filter(idx => idx < currentIndex).length; currentIndex -= removedBefore; - renderTracks(); } + renderTracks(); } function openTagEditor() { let idx = -1;