From ba2ec4a0e84cf7a210bf81e79a47e2ea84b9cba2 Mon Sep 17 00:00:00 2001 From: tapframe <85391825+tapframe@users.noreply.github.com> Date: Tue, 4 Aug 2026 20:50:16 +0530 Subject: [PATCH] fix(player): observe episode stream state --- .../app/features/player/PlayerScreenRuntimeState.kt | 2 +- .../features/player/PlayerScreenRuntimeStateTest.kt | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/player/PlayerScreenRuntimeState.kt b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/player/PlayerScreenRuntimeState.kt index 65e71717f..b2173a023 100644 --- a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/player/PlayerScreenRuntimeState.kt +++ b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/player/PlayerScreenRuntimeState.kt @@ -70,7 +70,7 @@ internal class PlayerScreenRuntime( var watchedUiState: WatchedUiState = WatchedUiState() var watchProgressUiState: WatchProgressUiState = WatchProgressUiState() var sourceStreamsState by mutableStateOf(StreamsUiState()) - var episodeStreamsRepoState: StreamsUiState = StreamsUiState() + var episodeStreamsRepoState by mutableStateOf(StreamsUiState()) var metaUiState: MetaDetailsUiState = MetaDetailsUiState() var addonsUiState: AddonsUiState = AddonsUiState() var addonSubtitles: List = emptyList() diff --git a/composeApp/src/commonTest/kotlin/com/nuvio/app/features/player/PlayerScreenRuntimeStateTest.kt b/composeApp/src/commonTest/kotlin/com/nuvio/app/features/player/PlayerScreenRuntimeStateTest.kt index 0b8f720ba..5bf37d33d 100644 --- a/composeApp/src/commonTest/kotlin/com/nuvio/app/features/player/PlayerScreenRuntimeStateTest.kt +++ b/composeApp/src/commonTest/kotlin/com/nuvio/app/features/player/PlayerScreenRuntimeStateTest.kt @@ -23,6 +23,18 @@ class PlayerScreenRuntimeStateTest { assertEquals("addon-id", selectedFilter.value) } + @Test + fun episodeFilterUpdatesInvalidateUiWithoutPlaybackUpdates() { + val runtime = PlayerScreenRuntime(testPlayerScreenArgs()) + val selectedFilter = derivedStateOf { runtime.episodeStreamsRepoState.selectedFilter } + + assertNull(selectedFilter.value) + + runtime.episodeStreamsRepoState = StreamsUiState(selectedFilter = "addon-id") + + assertEquals("addon-id", selectedFilter.value) + } + @Test fun seekScrobbleUpdate_requiresActiveIncompletePlayback() { assertTrue(