ref: homescreen now treats collections as a valid content

This commit is contained in:
tapframe 2026-05-10 10:17:02 +05:30
parent b3a1589296
commit c477e7e217
2 changed files with 19 additions and 3 deletions

View file

@ -404,6 +404,11 @@ fun HomeScreen(
val enabledHomeItems = remember(homeSettingsUiState.items) { val enabledHomeItems = remember(homeSettingsUiState.items) {
homeSettingsUiState.items.filter { it.enabled } homeSettingsUiState.items.filter { it.enabled }
} }
val hasRenderableCollectionRows = remember(enabledHomeItems, collectionsMap) {
enabledHomeItems.any { item ->
item.isCollection && collectionsMap[item.key] != null
}
}
BoxWithConstraints(modifier = modifier.fillMaxSize()) { BoxWithConstraints(modifier = modifier.fillMaxSize()) {
val homeSectionPadding = homeSectionHorizontalPaddingForWidth(maxWidth.value) val homeSectionPadding = homeSectionHorizontalPaddingForWidth(maxWidth.value)
@ -466,7 +471,7 @@ fun HomeScreen(
} }
when { when {
addonsUiState.addons.none { it.manifest != null } -> { addonsUiState.addons.none { it.manifest != null } && !hasRenderableCollectionRows -> {
if (continueWatchingPreferences.isVisible && continueWatchingItems.isNotEmpty()) { if (continueWatchingPreferences.isVisible && continueWatchingItems.isNotEmpty()) {
item { item {
HomeContinueWatchingSection( HomeContinueWatchingSection(
@ -491,7 +496,7 @@ fun HomeScreen(
} }
} }
homeUiState.isLoading && homeUiState.sections.isEmpty() -> { homeUiState.isLoading && homeUiState.sections.isEmpty() && !hasRenderableCollectionRows -> {
if (continueWatchingPreferences.isVisible && continueWatchingItems.isNotEmpty()) { if (continueWatchingPreferences.isVisible && continueWatchingItems.isNotEmpty()) {
item { item {
HomeContinueWatchingSection( HomeContinueWatchingSection(
@ -513,7 +518,8 @@ fun HomeScreen(
} }
homeUiState.sections.isEmpty() && homeUiState.heroItems.isEmpty() && homeUiState.sections.isEmpty() && homeUiState.heroItems.isEmpty() &&
(!continueWatchingPreferences.isVisible || continueWatchingItems.isEmpty()) -> { (!continueWatchingPreferences.isVisible || continueWatchingItems.isEmpty()) &&
!hasRenderableCollectionRows -> {
item { item {
if (networkStatusUiState.isOfflineLike) { if (networkStatusUiState.isOfflineLike) {
NuvioNetworkOfflineCard( NuvioNetworkOfflineCard(

View file

@ -58,6 +58,7 @@ import com.nuvio.app.features.details.MetaScreenSettingsRepository
import com.nuvio.app.features.details.MetaScreenSettingsUiState import com.nuvio.app.features.details.MetaScreenSettingsUiState
import com.nuvio.app.core.ui.PosterCardStyleRepository import com.nuvio.app.core.ui.PosterCardStyleRepository
import com.nuvio.app.core.ui.PosterCardStyleUiState import com.nuvio.app.core.ui.PosterCardStyleUiState
import com.nuvio.app.features.collection.CollectionRepository
import com.nuvio.app.features.home.HomeCatalogSettingsItem import com.nuvio.app.features.home.HomeCatalogSettingsItem
import com.nuvio.app.features.home.HomeCatalogSettingsRepository import com.nuvio.app.features.home.HomeCatalogSettingsRepository
import com.nuvio.app.features.mdblist.MdbListSettings import com.nuvio.app.features.mdblist.MdbListSettings
@ -160,6 +161,7 @@ fun SettingsScreen(
HomeCatalogSettingsRepository.snapshot() HomeCatalogSettingsRepository.snapshot()
HomeCatalogSettingsRepository.uiState HomeCatalogSettingsRepository.uiState
}.collectAsStateWithLifecycle() }.collectAsStateWithLifecycle()
val collections by CollectionRepository.collections.collectAsStateWithLifecycle()
val metaScreenSettingsUiState by remember { val metaScreenSettingsUiState by remember {
MetaScreenSettingsRepository.ensureLoaded() MetaScreenSettingsRepository.ensureLoaded()
MetaScreenSettingsRepository.uiState MetaScreenSettingsRepository.uiState
@ -182,6 +184,14 @@ fun SettingsScreen(
HomeCatalogSettingsRepository.syncCatalogs(addonsUiState.addons) HomeCatalogSettingsRepository.syncCatalogs(addonsUiState.addons)
} }
LaunchedEffect(Unit) {
CollectionRepository.initialize()
}
LaunchedEffect(collections) {
HomeCatalogSettingsRepository.syncCollections(collections)
}
var currentPage by rememberSaveable { mutableStateOf(SettingsPage.Root.name) } var currentPage by rememberSaveable { mutableStateOf(SettingsPage.Root.name) }
val page = remember(currentPage) { SettingsPage.valueOf(currentPage) } val page = remember(currentPage) { SettingsPage.valueOf(currentPage) }
val previousPage = page.previousPage() val previousPage = page.previousPage()