diff --git a/app/src/main/kotlin/com/subtracks/playback/PlaybackController.kt b/app/src/main/kotlin/com/subtracks/playback/PlaybackController.kt index 971f641e..93a62daa 100644 --- a/app/src/main/kotlin/com/subtracks/playback/PlaybackController.kt +++ b/app/src/main/kotlin/com/subtracks/playback/PlaybackController.kt @@ -1863,6 +1863,7 @@ class PlaybackController( private fun refresh(position: Long? = currentQueuePosition()) { val player = player ?: return + val publishedPosition = if (detachedWindow && currentPosition() == null) lastPosition ?: detachedPosition else position updateBuffering() val durationMs = player.durationMs.takeIf { it > 0 } @@ -1871,8 +1872,8 @@ class PlaybackController( _state.value = PlaybackState( item = player.currentItem, - context = contextAt(position), - position = position, + context = contextAt(publishedPosition), + position = publishedPosition, isBuffering = showBuffering, isPlaying = player.playWhenReady && !player.isIdle && !player.isEnded, durationMs = durationMs, diff --git a/app/src/test/kotlin/com/subtracks/playback/PlaybackControllerTest.kt b/app/src/test/kotlin/com/subtracks/playback/PlaybackControllerTest.kt index 1c68ad68..b4b3828b 100644 --- a/app/src/test/kotlin/com/subtracks/playback/PlaybackControllerTest.kt +++ b/app/src/test/kotlin/com/subtracks/playback/PlaybackControllerTest.kt @@ -4286,6 +4286,7 @@ class PlaybackControllerTest { runBlocking { queues.resetChangedOrigins(setOf(QueueOrigin(QueueKind.Playlist, 1, "p1")), point) } await { handle.items.map { it.id } == listOf("s2") && controller.state.value.position == null } controller.cycleRepeat() + assertNull(controller.state.value.position) assertEquals(RepeatMode.All, controller.state.value.repeat) }