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,24 +202,20 @@ 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) {
if (!allManifestsSettled) return@remember emptyList<String>()
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() .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(':')
@ -228,6 +224,7 @@ fun HomeScreen(
}) })
} }
} }
.sorted()
} }
LaunchedEffect(catalogRefreshKey) { LaunchedEffect(catalogRefreshKey) {