ref: adjust catalog loading to gradually emit while each addon resloves

This commit is contained in:
tapframe 2026-04-15 20:31:15 +05:30
parent 2abaa33612
commit 4ac2cb0ee1

View file

@ -202,32 +202,29 @@ fun HomeScreen(
nextUpItemsBySeries = effectivNextUpItems, nextUpItemsBySeries = effectivNextUpItems,
) )
} }
val allManifestsSettled = addonsUiState.addons.isNotEmpty() && val availableManifests = remember(addonsUiState.addons) {
addonsUiState.addons.none { it.isRefreshing } addonsUiState.addons.mapNotNull { addon -> addon.manifest }
}
val metaProviderKey = remember(addonsUiState.addons, allManifestsSettled) { val metaProviderKey = remember(availableManifests) {
if (!allManifestsSettled) return@remember emptyList<String>() availableManifests
addonsUiState.addons .filter { manifest -> manifest.resources.any { resource -> resource.name == "meta" } }
.mapNotNull { addon -> .map { manifest -> manifest.transportUrl }
addon.manifest?.takeIf { manifest ->
manifest.resources.any { resource -> resource.name == "meta" }
}?.transportUrl
}
.sorted() .sorted()
} }
val catalogRefreshKey = remember(addonsUiState.addons, allManifestsSettled) { val catalogRefreshKey = remember(availableManifests) {
if (!allManifestsSettled) return@remember emptyList<String>() availableManifests
addonsUiState.addons.mapNotNull { addon -> .map { manifest ->
val manifest = addon.manifest ?: return@mapNotNull null buildString {
buildString { append(manifest.transportUrl)
append(manifest.transportUrl) append(':')
append(':') append(manifest.catalogs.joinToString(separator = ",") { catalog ->
append(manifest.catalogs.joinToString(separator = ",") { catalog -> "${catalog.type}:${catalog.id}:${catalog.extra.count { it.isRequired }}"
"${catalog.type}:${catalog.id}:${catalog.extra.count { it.isRequired }}" })
}) }
} }
} .sorted()
} }
LaunchedEffect(catalogRefreshKey) { LaunchedEffect(catalogRefreshKey) {