Fix #421: properly handle reordering and deleting repeat tracks in queue

This commit is contained in:
Drew Weymouth
2024-07-13 10:53:57 -07:00
parent 69a1900cb5
commit 3f30448383
5 changed files with 30 additions and 21 deletions
+4 -4
View File
@@ -341,15 +341,15 @@ func (p *playbackEngine) UpdatePlayQueue(items []mediaprovider.MediaItem) error
return nil
}
func (p *playbackEngine) RemoveTracksFromQueue(trackIDs []string) {
newQueue := make([]mediaprovider.MediaItem, 0, len(p.playQueue)-len(trackIDs))
idSet := sharedutil.ToSet(trackIDs)
func (p *playbackEngine) RemoveTracksFromQueue(idxs []int) {
newQueue := make([]mediaprovider.MediaItem, 0, len(p.playQueue)-len(idxs))
idxSet := sharedutil.ToSet(idxs)
isPlayingTrackRemoved := false
isNextPlayingTrackremoved := false
nowPlaying := p.NowPlayingIndex()
newNowPlaying := nowPlaying
for i, tr := range p.playQueue {
if _, ok := idSet[tr.Metadata().ID]; ok {
if _, ok := idxSet[i]; ok {
if i < nowPlaying {
// if removing a track earlier than the currently playing one (if any),
// decrement new now playing index by one to account for new position in queue