From 4ac2cb0ee17c17ee086621c39fb8f222d39b80aa Mon Sep 17 00:00:00 2001 From: tapframe <85391825+tapframe@users.noreply.github.com> Date: Wed, 15 Apr 2026 20:31:15 +0530 Subject: [PATCH] ref: adjust catalog loading to gradually emit while each addon resloves --- .../com/nuvio/app/features/home/HomeScreen.kt | 39 +++++++++---------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/home/HomeScreen.kt b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/home/HomeScreen.kt index c0455b07..5611f1c5 100644 --- a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/home/HomeScreen.kt +++ b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/home/HomeScreen.kt @@ -202,32 +202,29 @@ fun HomeScreen( nextUpItemsBySeries = effectivNextUpItems, ) } - val allManifestsSettled = addonsUiState.addons.isNotEmpty() && - addonsUiState.addons.none { it.isRefreshing } + val availableManifests = remember(addonsUiState.addons) { + addonsUiState.addons.mapNotNull { addon -> addon.manifest } + } - val metaProviderKey = remember(addonsUiState.addons, allManifestsSettled) { - if (!allManifestsSettled) return@remember emptyList() - addonsUiState.addons - .mapNotNull { addon -> - addon.manifest?.takeIf { manifest -> - manifest.resources.any { resource -> resource.name == "meta" } - }?.transportUrl - } + val metaProviderKey = remember(availableManifests) { + availableManifests + .filter { manifest -> manifest.resources.any { resource -> resource.name == "meta" } } + .map { manifest -> manifest.transportUrl } .sorted() } - val catalogRefreshKey = remember(addonsUiState.addons, allManifestsSettled) { - if (!allManifestsSettled) return@remember emptyList() - addonsUiState.addons.mapNotNull { addon -> - val manifest = addon.manifest ?: return@mapNotNull null - buildString { - append(manifest.transportUrl) - append(':') - append(manifest.catalogs.joinToString(separator = ",") { catalog -> - "${catalog.type}:${catalog.id}:${catalog.extra.count { it.isRequired }}" - }) + val catalogRefreshKey = remember(availableManifests) { + availableManifests + .map { manifest -> + buildString { + append(manifest.transportUrl) + append(':') + append(manifest.catalogs.joinToString(separator = ",") { catalog -> + "${catalog.type}:${catalog.id}:${catalog.extra.count { it.isRequired }}" + }) + } } - } + .sorted() } LaunchedEffect(catalogRefreshKey) {