mirror of
https://github.com/tapframe/NuvioStreaming.git
synced 2026-07-26 22:42:17 +00:00
fix: catalog resettings on app start
This commit is contained in:
parent
cfe692014b
commit
5668f4ef3c
4 changed files with 41 additions and 7 deletions
|
|
@ -246,11 +246,9 @@ kotlin {
|
|||
}
|
||||
|
||||
afterEvaluate {
|
||||
if (iosDistribution == "full") {
|
||||
dependencies {
|
||||
add("androidFullImplementation", libs.quickjs.kt)
|
||||
add("androidFullImplementation", libs.ksoup)
|
||||
}
|
||||
dependencies {
|
||||
add("fullImplementation", libs.quickjs.kt)
|
||||
add("fullImplementation", libs.ksoup)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -100,6 +100,10 @@ object HomeCatalogSettingsRepository {
|
|||
fun syncCatalogs(addons: List<ManagedAddon>) {
|
||||
ensureLoaded()
|
||||
definitions = buildHomeCatalogDefinitions(addons)
|
||||
if (definitions.isEmpty()) {
|
||||
publish()
|
||||
return
|
||||
}
|
||||
normalizePreferences()
|
||||
publish()
|
||||
persist()
|
||||
|
|
|
|||
|
|
@ -24,13 +24,29 @@ fun HomescreenSettingsScreen(
|
|||
onBack: () -> Unit,
|
||||
) {
|
||||
val addonsUiState by AddonRepository.uiState.collectAsStateWithLifecycle()
|
||||
val homescreenCatalogRefreshKey = remember(addonsUiState.addons) {
|
||||
val allManifestsSettled = addonsUiState.addons.isNotEmpty() &&
|
||||
addonsUiState.addons.none { it.isRefreshing }
|
||||
if (!allManifestsSettled) return@remember emptyList<String>()
|
||||
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 homescreenSettingsUiState by HomeCatalogSettingsRepository.uiState.collectAsStateWithLifecycle()
|
||||
|
||||
LaunchedEffect(Unit) {
|
||||
AddonRepository.initialize()
|
||||
}
|
||||
|
||||
LaunchedEffect(addonsUiState.addons) {
|
||||
LaunchedEffect(homescreenCatalogRefreshKey) {
|
||||
if (homescreenCatalogRefreshKey.isEmpty()) return@LaunchedEffect
|
||||
HomeCatalogSettingsRepository.syncCatalogs(addonsUiState.addons)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -103,6 +103,21 @@ fun SettingsScreen(
|
|||
AddonRepository.initialize()
|
||||
AddonRepository.uiState
|
||||
}.collectAsStateWithLifecycle()
|
||||
val homescreenCatalogRefreshKey = remember(addonsUiState.addons) {
|
||||
val allManifestsSettled = addonsUiState.addons.isNotEmpty() &&
|
||||
addonsUiState.addons.none { it.isRefreshing }
|
||||
if (!allManifestsSettled) return@remember emptyList<String>()
|
||||
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 homescreenSettingsUiState by remember {
|
||||
HomeCatalogSettingsRepository.uiState
|
||||
}.collectAsStateWithLifecycle()
|
||||
|
|
@ -119,7 +134,8 @@ fun SettingsScreen(
|
|||
EpisodeReleaseNotificationsRepository.uiState
|
||||
}.collectAsStateWithLifecycle()
|
||||
|
||||
LaunchedEffect(addonsUiState.addons) {
|
||||
LaunchedEffect(homescreenCatalogRefreshKey) {
|
||||
if (homescreenCatalogRefreshKey.isEmpty()) return@LaunchedEffect
|
||||
HomeCatalogSettingsRepository.syncCatalogs(addonsUiState.addons)
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue