From b85a0d4b8ceae2dc85b67b7f29f3bca1c732d096 Mon Sep 17 00:00:00 2001 From: Zyrouge Date: Wed, 27 Nov 2024 22:59:02 +0530 Subject: [PATCH] fix: prevent null pointer exception when queue is empty --- .../symphony/services/radio/RadioQueue.kt | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/io/github/zyrouge/symphony/services/radio/RadioQueue.kt b/app/src/main/java/io/github/zyrouge/symphony/services/radio/RadioQueue.kt index 7bbefbf5..f903b6e2 100644 --- a/app/src/main/java/io/github/zyrouge/symphony/services/radio/RadioQueue.kt +++ b/app/src/main/java/io/github/zyrouge/symphony/services/radio/RadioQueue.kt @@ -123,19 +123,21 @@ class RadioQueue(private val symphony: Symphony) { fun setShuffleMode(to: Boolean) { currentShuffleMode = to - val currentSongId = getSongIdAt(currentSongIndex)!! - currentSongIndex = if (currentShuffleMode) { - val newQueue = originalQueue.toMutableList() - newQueue.removeAt(currentSongIndex) - newQueue.shuffle() - newQueue.add(0, currentSongId) - currentQueue.clear() - currentQueue.addAll(newQueue) - 0 - } else { - currentQueue.clear() - currentQueue.addAll(originalQueue) - currentQueue.indexOfFirst { it == currentSongId } + if (currentQueue.isNotEmpty()) { + val currentSongId = getSongIdAt(currentSongIndex) ?: getSongIdAt(0)!! + currentSongIndex = if (currentShuffleMode) { + val newQueue = originalQueue.toMutableList() + newQueue.removeAt(currentSongIndex) + newQueue.shuffle() + newQueue.add(0, currentSongId) + currentQueue.clear() + currentQueue.addAll(newQueue) + 0 + } else { + currentQueue.clear() + currentQueue.addAll(originalQueue) + currentQueue.indexOfFirst { it == currentSongId } + } } symphony.radio.onUpdate.dispatch(Radio.Events.Queue.Modified) }