move current track to front on shuffle

This commit is contained in:
Siiiiinth
2026-02-15 09:29:20 -08:00
committed by Drew Weymouth
parent 15caaad5cf
commit 1a5fed3add
+18 -5
View File
@@ -229,6 +229,13 @@ func (p *playbackEngine) getPlayQueue() []mediaprovider.MediaItem {
return p.playQueue return p.playQueue
} }
func (p *playbackEngine) getActivePlayQueue() []mediaprovider.MediaItem {
if p.shuffle {
return p.shuffledPlayQueue
}
return p.playQueue
}
func (p *playbackEngine) getPlayQueueLength() int { func (p *playbackEngine) getPlayQueueLength() int {
return len(p.getPlayQueue()) return len(p.getPlayQueue())
} }
@@ -259,6 +266,10 @@ func (p *playbackEngine) GetPlayQueueDeepCopy() []mediaprovider.MediaItem {
return deepCopyMediaItemSlice(p.getPlayQueue()) return deepCopyMediaItemSlice(p.getPlayQueue())
} }
func (p *playbackEngine) GetActivePlayQueueDeepCopy() []mediaprovider.MediaItem {
return deepCopyMediaItemSlice(p.getActivePlayQueue())
}
// ======================== END PLAY QUEUE FUNCS ============================= // ======================== END PLAY QUEUE FUNCS =============================
func (p *playbackEngine) PlayTrackAt(idx int) error { func (p *playbackEngine) PlayTrackAt(idx int) error {
@@ -332,9 +343,8 @@ func (p *playbackEngine) SetShuffle(shuffle bool) {
rand.Shuffle(len(shuffledQueue), func(i, j int) { rand.Shuffle(len(shuffledQueue), func(i, j int) {
shuffledQueue[i], shuffledQueue[j] = shuffledQueue[j], shuffledQueue[i] shuffledQueue[i], shuffledQueue[j] = shuffledQueue[j], shuffledQueue[i]
}) })
// TODO_SHUFFLE: move now playing track to beginning of queue p.shuffledPlayQueue = sharedutil.ReorderItems(shuffledQueue, []int{p.GetNewNowPlayingIdx(shuffledQueue)}, 0)
newNowPlayingIdx = p.GetNewNowPlayingIdx(shuffledQueue) newNowPlayingIdx = 0
p.shuffledPlayQueue = shuffledQueue
} else { } else {
newNowPlayingIdx = p.GetNewNowPlayingIdx(p.playQueue) newNowPlayingIdx = p.GetNewNowPlayingIdx(p.playQueue)
} }
@@ -554,8 +564,11 @@ func (p *playbackEngine) UpdatePlayQueue(items []mediaprovider.MediaItem) error
} }
} }
} }
if p.shuffle {
p.setPlayQueue(newQueue) p.setShuffledPlayQueue(newQueue)
} else {
p.setPlayQueue(newQueue)
}
if p.nowPlayingIdx >= 0 && newNowPlayingIdx == -1 { if p.nowPlayingIdx >= 0 && newNowPlayingIdx == -1 {
return p.Stop() return p.Stop()
} }