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
+17 -4
View File
@@ -229,6 +229,13 @@ func (p *playbackEngine) getPlayQueue() []mediaprovider.MediaItem {
return p.playQueue
}
func (p *playbackEngine) getActivePlayQueue() []mediaprovider.MediaItem {
if p.shuffle {
return p.shuffledPlayQueue
}
return p.playQueue
}
func (p *playbackEngine) getPlayQueueLength() int {
return len(p.getPlayQueue())
}
@@ -259,6 +266,10 @@ func (p *playbackEngine) GetPlayQueueDeepCopy() []mediaprovider.MediaItem {
return deepCopyMediaItemSlice(p.getPlayQueue())
}
func (p *playbackEngine) GetActivePlayQueueDeepCopy() []mediaprovider.MediaItem {
return deepCopyMediaItemSlice(p.getActivePlayQueue())
}
// ======================== END PLAY QUEUE FUNCS =============================
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) {
shuffledQueue[i], shuffledQueue[j] = shuffledQueue[j], shuffledQueue[i]
})
// TODO_SHUFFLE: move now playing track to beginning of queue
newNowPlayingIdx = p.GetNewNowPlayingIdx(shuffledQueue)
p.shuffledPlayQueue = shuffledQueue
p.shuffledPlayQueue = sharedutil.ReorderItems(shuffledQueue, []int{p.GetNewNowPlayingIdx(shuffledQueue)}, 0)
newNowPlayingIdx = 0
} else {
newNowPlayingIdx = p.GetNewNowPlayingIdx(p.playQueue)
}
@@ -554,8 +564,11 @@ func (p *playbackEngine) UpdatePlayQueue(items []mediaprovider.MediaItem) error
}
}
}
if p.shuffle {
p.setShuffledPlayQueue(newQueue)
} else {
p.setPlayQueue(newQueue)
}
if p.nowPlayingIdx >= 0 && newNowPlayingIdx == -1 {
return p.Stop()
}