diff --git a/composeApp/src/commonMain/kotlin/dev/krtirtho/spotube/modules/album/AlbumViewModel.kt b/composeApp/src/commonMain/kotlin/dev/krtirtho/spotube/modules/album/AlbumViewModel.kt index 35f2b9ff..f705968c 100644 --- a/composeApp/src/commonMain/kotlin/dev/krtirtho/spotube/modules/album/AlbumViewModel.kt +++ b/composeApp/src/commonMain/kotlin/dev/krtirtho/spotube/modules/album/AlbumViewModel.kt @@ -241,20 +241,10 @@ class AlbumViewModel( is TrackOptionsAction.StartRadio -> {} is TrackOptionsAction.PlayNext -> { val queue = audioPlayerQueue.getQueue() - val queueIndex = queue.indexOfFirst { entry -> + queue.find { entry -> (entry as? QueueEntry.StreamingTrack)?.track?.matchesTrack(track) == true - } - if (queueIndex >= 0) { - 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) - } + }?.let { audioPlayerQueue.removeFromQueue(it) } + audioPlayerQueue.addAllAfterCurrent(listOf(QueueEntry.StreamingTrack(track = track, url = ""))) } is TrackOptionsAction.AddToQueue -> { diff --git a/composeApp/src/commonMain/kotlin/dev/krtirtho/spotube/modules/artist/ArtistViewModel.kt b/composeApp/src/commonMain/kotlin/dev/krtirtho/spotube/modules/artist/ArtistViewModel.kt index ed078be4..e6af958c 100644 --- a/composeApp/src/commonMain/kotlin/dev/krtirtho/spotube/modules/artist/ArtistViewModel.kt +++ b/composeApp/src/commonMain/kotlin/dev/krtirtho/spotube/modules/artist/ArtistViewModel.kt @@ -329,22 +329,10 @@ class ArtistViewModel( is TrackOptionsAction.StartRadio -> {} is TrackOptionsAction.PlayNext -> { val queue = audioPlayerQueue.getQueue() - val queueIndex = queue.indexOfFirst { entry -> + queue.find { entry -> (entry as? QueueEntry.StreamingTrack)?.track?.matchesTrack(track) == true - } - if (queueIndex >= 0) { - 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) - } + }?.let { audioPlayerQueue.removeFromQueue(it) } + audioPlayerQueue.addAllAfterCurrent(listOf(QueueEntry.StreamingTrack(track = track, url = ""))) } is TrackOptionsAction.AddToQueue -> { audioPlayerQueue.addToQueue(QueueEntry.StreamingTrack(track = track, url = "")) diff --git a/composeApp/src/commonMain/kotlin/dev/krtirtho/spotube/modules/playlist/PlaylistViewModel.kt b/composeApp/src/commonMain/kotlin/dev/krtirtho/spotube/modules/playlist/PlaylistViewModel.kt index 8d244033..7cd51cbb 100644 --- a/composeApp/src/commonMain/kotlin/dev/krtirtho/spotube/modules/playlist/PlaylistViewModel.kt +++ b/composeApp/src/commonMain/kotlin/dev/krtirtho/spotube/modules/playlist/PlaylistViewModel.kt @@ -274,20 +274,10 @@ class PlaylistViewModel( is TrackOptionsAction.StartRadio -> {} is TrackOptionsAction.PlayNext -> { val queue = audioPlayerQueue.getQueue() - val queueIndex = queue.indexOfFirst { entry -> + queue.find { entry -> (entry as? QueueEntry.StreamingTrack)?.track?.matchesTrack(track) == true - } - if (queueIndex >= 0) { - 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) - } + }?.let { audioPlayerQueue.removeFromQueue(it) } + audioPlayerQueue.addAllAfterCurrent(listOf(QueueEntry.StreamingTrack(track = track, url = ""))) } is TrackOptionsAction.AddToQueue -> { diff --git a/composeApp/src/commonMain/kotlin/dev/krtirtho/spotube/modules/saved_tracks/SavedTracksViewModel.kt b/composeApp/src/commonMain/kotlin/dev/krtirtho/spotube/modules/saved_tracks/SavedTracksViewModel.kt index 925bd50a..41fa1bc7 100644 --- a/composeApp/src/commonMain/kotlin/dev/krtirtho/spotube/modules/saved_tracks/SavedTracksViewModel.kt +++ b/composeApp/src/commonMain/kotlin/dev/krtirtho/spotube/modules/saved_tracks/SavedTracksViewModel.kt @@ -224,20 +224,10 @@ class SavedTracksViewModel( is TrackOptionsAction.StartRadio -> {} is TrackOptionsAction.PlayNext -> { val queue = audioPlayerQueue.getQueue() - val queueIndex = queue.indexOfFirst { entry -> + queue.find { entry -> (entry as? QueueEntry.StreamingTrack)?.track?.matchesTrack(track) == true - } - if (queueIndex >= 0) { - 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) - } + }?.let { audioPlayerQueue.removeFromQueue(it) } + audioPlayerQueue.addAllAfterCurrent(listOf(QueueEntry.StreamingTrack(track = track, url = ""))) } is TrackOptionsAction.AddToQueue -> { diff --git a/composeApp/src/commonMain/kotlin/dev/krtirtho/spotube/modules/search/SearchScreen.kt b/composeApp/src/commonMain/kotlin/dev/krtirtho/spotube/modules/search/SearchScreen.kt index a83e10b9..0428244f 100644 --- a/composeApp/src/commonMain/kotlin/dev/krtirtho/spotube/modules/search/SearchScreen.kt +++ b/composeApp/src/commonMain/kotlin/dev/krtirtho/spotube/modules/search/SearchScreen.kt @@ -171,20 +171,10 @@ fun SearchScreen(viewModel: SearchScreenViewModel = koinViewModel()) { is TrackOptionsAction.StartRadio -> {} is TrackOptionsAction.PlayNext -> { val queue = audioPlayerQueue.getQueue() - val queueIndex = queue.indexOfFirst { entry -> + queue.find { entry -> (entry as? QueueEntry.StreamingTrack)?.track?.id == track.id - } - if (queueIndex >= 0) { - 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) - } + }?.let { audioPlayerQueue.removeFromQueue(it) } + audioPlayerQueue.addAllAfterCurrent(listOf(QueueEntry.StreamingTrack(track = track, url = ""))) } is TrackOptionsAction.AddToQueue -> {