diff --git a/composeApp/src/commonMain/kotlin/com/nuvio/app/App.kt b/composeApp/src/commonMain/kotlin/com/nuvio/app/App.kt index 4e68adf2..f3095f59 100644 --- a/composeApp/src/commonMain/kotlin/com/nuvio/app/App.kt +++ b/composeApp/src/commonMain/kotlin/com/nuvio/app/App.kt @@ -1327,6 +1327,7 @@ private fun MainAppContent( ) ) StreamsRepository.consumeAutoPlay() + StreamsRepository.cancelLoading() navController.navigate(PlayerRoute(launchId = launchId)) { popUpTo { inclusive = true } } @@ -1405,6 +1406,7 @@ private fun MainAppContent( initialProgressFraction = resolvedResumeProgressFraction, ) ) + StreamsRepository.cancelLoading() navController.navigate( PlayerRoute(launchId = launchId) ) diff --git a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/streams/StreamsRepository.kt b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/streams/StreamsRepository.kt index 98d6e7e3..674e3352 100644 --- a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/streams/StreamsRepository.kt +++ b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/streams/StreamsRepository.kt @@ -424,8 +424,32 @@ object StreamsRepository { } } + fun cancelLoading() { + activeJob?.cancel() + activeJob = null + _uiState.update { current -> + if (!current.isAnyLoading && current.groups.none { it.isLoading }) { + current + } else { + val updatedGroups = current.groups.map { group -> + if (group.isLoading) group.copy(isLoading = false) else group + } + current.copy( + groups = updatedGroups, + isAnyLoading = false, + emptyStateReason = if (updatedGroups.isEmpty()) { + current.emptyStateReason + } else { + updatedGroups.toEmptyStateReason(anyLoading = false) + }, + ) + } + } + } + fun clear() { activeJob?.cancel() + activeJob = null activeRequestKey = null _uiState.value = StreamsUiState() }