From 7236ce76d44799db35031d4890328527080d6339 Mon Sep 17 00:00:00 2001 From: austinried <4966622+austinried@users.noreply.github.com> Date: Thu, 24 Sep 2026 12:33:44 +0000 Subject: [PATCH] rebuild the queue window from the shuffled snapshot when starting a shuffled queue --- .../subtracks/playback/PlaybackController.kt | 1 + .../playback/PlaybackControllerTest.kt | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/app/src/main/kotlin/com/subtracks/playback/PlaybackController.kt b/app/src/main/kotlin/com/subtracks/playback/PlaybackController.kt index 03009b6b..bbd97f71 100644 --- a/app/src/main/kotlin/com/subtracks/playback/PlaybackController.kt +++ b/app/src/main/kotlin/com/subtracks/playback/PlaybackController.kt @@ -522,6 +522,7 @@ class PlaybackController( start } queueRepository.setCursor(position) + this.snapshot = queueRepository.snapshot() loadWindow(position, autoplay = true) } diff --git a/app/src/test/kotlin/com/subtracks/playback/PlaybackControllerTest.kt b/app/src/test/kotlin/com/subtracks/playback/PlaybackControllerTest.kt index cd679bf1..cb0464c2 100644 --- a/app/src/test/kotlin/com/subtracks/playback/PlaybackControllerTest.kt +++ b/app/src/test/kotlin/com/subtracks/playback/PlaybackControllerTest.kt @@ -747,6 +747,29 @@ class PlaybackControllerTest { } } + @Test + fun tappingASongWhileShuffledPlaysThatSong() { + seedAlbum(5, sourceId = 1) + + controller.playAlbum(1, "al1", 0) + await { + controller.state.value.item + ?.id == "s1" + } + + controller.toggleShuffle() + await { controller.state.value.shuffle } + + controller.playAlbum(1, "al1", 3) + await { + controller.state.value.item + ?.id == "s4" + } + + assertEquals(0L, controller.state.value.position) + assertEquals("s4", handle.items.first().id) + } + private fun seedAlbum( count: Int, sourceId: Long,