fix: play next not working

This commit is contained in:
Kingkor Roy Tirtho 2026-08-14 17:17:14 +06:00
parent f4eac7dbd9
commit 4ef256249e
5 changed files with 15 additions and 67 deletions

View File

@ -241,20 +241,10 @@ class AlbumViewModel(
is TrackOptionsAction.StartRadio -> {} is TrackOptionsAction.StartRadio -> {}
is TrackOptionsAction.PlayNext -> { is TrackOptionsAction.PlayNext -> {
val queue = audioPlayerQueue.getQueue() val queue = audioPlayerQueue.getQueue()
val queueIndex = queue.indexOfFirst { entry -> queue.find { entry ->
(entry as? QueueEntry.StreamingTrack)?.track?.matchesTrack(track) == true (entry as? QueueEntry.StreamingTrack)?.track?.matchesTrack(track) == true
} }?.let { audioPlayerQueue.removeFromQueue(it) }
if (queueIndex >= 0) { audioPlayerQueue.addAllAfterCurrent(listOf(QueueEntry.StreamingTrack(track = track, url = "")))
audioPlayerQueue.removeFromQueue(queue[queueIndex])
}
audioPlayerQueue.addToQueue(QueueEntry.StreamingTrack(track = track, url = ""))
val newQueue = audioPlayerQueue.getQueue()
val newIndex = newQueue.indexOfFirst { e ->
(e as? QueueEntry.StreamingTrack)?.track?.matchesTrack(track) == true
}
if (newIndex > 0) {
audioPlayerQueue.move(newIndex, 0)
}
} }
is TrackOptionsAction.AddToQueue -> { is TrackOptionsAction.AddToQueue -> {

View File

@ -329,22 +329,10 @@ class ArtistViewModel(
is TrackOptionsAction.StartRadio -> {} is TrackOptionsAction.StartRadio -> {}
is TrackOptionsAction.PlayNext -> { is TrackOptionsAction.PlayNext -> {
val queue = audioPlayerQueue.getQueue() val queue = audioPlayerQueue.getQueue()
val queueIndex = queue.indexOfFirst { entry -> queue.find { entry ->
(entry as? QueueEntry.StreamingTrack)?.track?.matchesTrack(track) == true (entry as? QueueEntry.StreamingTrack)?.track?.matchesTrack(track) == true
} }?.let { audioPlayerQueue.removeFromQueue(it) }
if (queueIndex >= 0) { audioPlayerQueue.addAllAfterCurrent(listOf(QueueEntry.StreamingTrack(track = track, url = "")))
val entry = queue[queueIndex]
audioPlayerQueue.removeFromQueue(entry)
}
val entry = QueueEntry.StreamingTrack(track = track, url = "")
audioPlayerQueue.addToQueue(entry)
val newQueue = audioPlayerQueue.getQueue()
val newIndex = newQueue.indexOfFirst { e ->
(e as? QueueEntry.StreamingTrack)?.track?.matchesTrack(track) == true
}
if (newIndex >= 0) {
audioPlayerQueue.move(newIndex, 0)
}
} }
is TrackOptionsAction.AddToQueue -> { is TrackOptionsAction.AddToQueue -> {
audioPlayerQueue.addToQueue(QueueEntry.StreamingTrack(track = track, url = "")) audioPlayerQueue.addToQueue(QueueEntry.StreamingTrack(track = track, url = ""))

View File

@ -274,20 +274,10 @@ class PlaylistViewModel(
is TrackOptionsAction.StartRadio -> {} is TrackOptionsAction.StartRadio -> {}
is TrackOptionsAction.PlayNext -> { is TrackOptionsAction.PlayNext -> {
val queue = audioPlayerQueue.getQueue() val queue = audioPlayerQueue.getQueue()
val queueIndex = queue.indexOfFirst { entry -> queue.find { entry ->
(entry as? QueueEntry.StreamingTrack)?.track?.matchesTrack(track) == true (entry as? QueueEntry.StreamingTrack)?.track?.matchesTrack(track) == true
} }?.let { audioPlayerQueue.removeFromQueue(it) }
if (queueIndex >= 0) { audioPlayerQueue.addAllAfterCurrent(listOf(QueueEntry.StreamingTrack(track = track, url = "")))
audioPlayerQueue.removeFromQueue(queue[queueIndex])
}
audioPlayerQueue.addToQueue(QueueEntry.StreamingTrack(track = track, url = ""))
val newQueue = audioPlayerQueue.getQueue()
val newIndex = newQueue.indexOfFirst { e ->
(e as? QueueEntry.StreamingTrack)?.track?.matchesTrack(track) == true
}
if (newIndex > 0) {
audioPlayerQueue.move(newIndex, 0)
}
} }
is TrackOptionsAction.AddToQueue -> { is TrackOptionsAction.AddToQueue -> {

View File

@ -224,20 +224,10 @@ class SavedTracksViewModel(
is TrackOptionsAction.StartRadio -> {} is TrackOptionsAction.StartRadio -> {}
is TrackOptionsAction.PlayNext -> { is TrackOptionsAction.PlayNext -> {
val queue = audioPlayerQueue.getQueue() val queue = audioPlayerQueue.getQueue()
val queueIndex = queue.indexOfFirst { entry -> queue.find { entry ->
(entry as? QueueEntry.StreamingTrack)?.track?.matchesTrack(track) == true (entry as? QueueEntry.StreamingTrack)?.track?.matchesTrack(track) == true
} }?.let { audioPlayerQueue.removeFromQueue(it) }
if (queueIndex >= 0) { audioPlayerQueue.addAllAfterCurrent(listOf(QueueEntry.StreamingTrack(track = track, url = "")))
audioPlayerQueue.removeFromQueue(queue[queueIndex])
}
audioPlayerQueue.addToQueue(QueueEntry.StreamingTrack(track = track, url = ""))
val newQueue = audioPlayerQueue.getQueue()
val newIndex = newQueue.indexOfFirst { e ->
(e as? QueueEntry.StreamingTrack)?.track?.matchesTrack(track) == true
}
if (newIndex > 0) {
audioPlayerQueue.move(newIndex, 0)
}
} }
is TrackOptionsAction.AddToQueue -> { is TrackOptionsAction.AddToQueue -> {

View File

@ -171,20 +171,10 @@ fun SearchScreen(viewModel: SearchScreenViewModel = koinViewModel()) {
is TrackOptionsAction.StartRadio -> {} is TrackOptionsAction.StartRadio -> {}
is TrackOptionsAction.PlayNext -> { is TrackOptionsAction.PlayNext -> {
val queue = audioPlayerQueue.getQueue() val queue = audioPlayerQueue.getQueue()
val queueIndex = queue.indexOfFirst { entry -> queue.find { entry ->
(entry as? QueueEntry.StreamingTrack)?.track?.id == track.id (entry as? QueueEntry.StreamingTrack)?.track?.id == track.id
} }?.let { audioPlayerQueue.removeFromQueue(it) }
if (queueIndex >= 0) { audioPlayerQueue.addAllAfterCurrent(listOf(QueueEntry.StreamingTrack(track = track, url = "")))
audioPlayerQueue.removeFromQueue(queue[queueIndex])
}
audioPlayerQueue.addToQueue(QueueEntry.StreamingTrack(track = track, url = ""))
val newQueue = audioPlayerQueue.getQueue()
val newIndex = newQueue.indexOfFirst { e ->
(e as? QueueEntry.StreamingTrack)?.track?.id == track.id
}
if (newIndex > 0) {
audioPlayerQueue.move(newIndex, 0)
}
} }
is TrackOptionsAction.AddToQueue -> { is TrackOptionsAction.AddToQueue -> {