code clean up - remove tracks
This commit is contained in:
+12
-14
@@ -329,6 +329,7 @@ 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
|
||||||
newNowPlayingIdx = p.GetNewNowPlayingIdx(shuffledQueue)
|
newNowPlayingIdx = p.GetNewNowPlayingIdx(shuffledQueue)
|
||||||
p.shuffledPlayQueue = shuffledQueue
|
p.shuffledPlayQueue = shuffledQueue
|
||||||
} else {
|
} else {
|
||||||
@@ -571,9 +572,19 @@ func (p *playbackEngine) RemoveTracksFromQueue(idxs []int) {
|
|||||||
newNowPlaying := nowPlaying
|
newNowPlaying := nowPlaying
|
||||||
|
|
||||||
if p.shuffle {
|
if p.shuffle {
|
||||||
|
// remove tracks by ID from playQueue
|
||||||
ids := p.GetTrackIdsFromIdx(idxs)
|
ids := p.GetTrackIdsFromIdx(idxs)
|
||||||
newPlayQueue := make([]mediaprovider.MediaItem, 0, p.getPlayQueueLength()-len(idxs))
|
newPlayQueue := make([]mediaprovider.MediaItem, 0, p.getPlayQueueLength()-len(idxs))
|
||||||
p.RemoveTracksFromQueueById(ids, &newPlayQueue)
|
for _, tr := range p.playQueue { //TODO_SHUFFLE: Rework this to use a func for getPlayQueue
|
||||||
|
if slices.Contains(ids, tr.Metadata().ID) {
|
||||||
|
//remove id from id list, handles having the same track present multiple times in playQueue
|
||||||
|
idx := slices.Index(ids, tr.Metadata().ID)
|
||||||
|
ids = slices.Delete(ids, idx, idx+1)
|
||||||
|
} else {
|
||||||
|
// not removing this track
|
||||||
|
newPlayQueue = append(newPlayQueue, tr)
|
||||||
|
}
|
||||||
|
}
|
||||||
p.setPlayQueue(newPlayQueue)
|
p.setPlayQueue(newPlayQueue)
|
||||||
|
|
||||||
newShuffledQueue := make([]mediaprovider.MediaItem, 0, p.getPlayQueueLength()-len(idxs))
|
newShuffledQueue := make([]mediaprovider.MediaItem, 0, p.getPlayQueueLength()-len(idxs))
|
||||||
@@ -633,19 +644,6 @@ func (p *playbackEngine) RemoveTracksFromQueueByIdx(idxs []int, newQueue *[]medi
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *playbackEngine) RemoveTracksFromQueueById(ids []string, newQueue *[]mediaprovider.MediaItem) {
|
|
||||||
for _, tr := range p.playQueue { //TODO_SHUFFLE: Rework this to use a func for getPlayQueue
|
|
||||||
if slices.Contains(ids, tr.Metadata().ID) {
|
|
||||||
//remove id from id list, handles having the same track present multiple times in playQueue
|
|
||||||
idx := slices.Index(ids, tr.Metadata().ID)
|
|
||||||
ids = slices.Delete(ids, idx, idx+1)
|
|
||||||
} else {
|
|
||||||
// not removing this track
|
|
||||||
*newQueue = append(*newQueue, tr)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *playbackEngine) GetTrackIdsFromIdx(idx []int) []string {
|
func (p *playbackEngine) GetTrackIdsFromIdx(idx []int) []string {
|
||||||
ids := make([]string, 0, len(idx))
|
ids := make([]string, 0, len(idx))
|
||||||
for _, v := range idx {
|
for _, v := range idx {
|
||||||
|
|||||||
Reference in New Issue
Block a user