diff --git a/androidApp/src/main/kotlin/com/prof18/feedflow/home/HomeScreen.android.kt b/androidApp/src/main/kotlin/com/prof18/feedflow/home/HomeScreen.android.kt index 7709b151..2efdde5b 100644 --- a/androidApp/src/main/kotlin/com/prof18/feedflow/home/HomeScreen.android.kt +++ b/androidApp/src/main/kotlin/com/prof18/feedflow/home/HomeScreen.android.kt @@ -113,7 +113,7 @@ internal fun HomeScreen( when (windowSizeClass.widthSizeClass) { WindowWidthSizeClass.Compact -> { - if (feedState.isEmpty()) { + if (feedState.isEmpty() && navDrawerState.isEmpty()) { HomeScaffold( unReadCount = unReadCount, onSettingsButtonClicked = onSettingsButtonClicked, @@ -187,7 +187,7 @@ internal fun HomeScreen( AnimatedVisibility( modifier = Modifier .weight(1f), - visible = isDrawerMenuFullVisible && feedState.isNotEmpty(), + visible = isDrawerMenuFullVisible && (feedState.isNotEmpty() || navDrawerState.isNotEmpty()), ) { Scaffold { paddingValues -> Drawer( @@ -231,7 +231,7 @@ internal fun HomeScreen( WindowWidthSizeClass.Expanded -> { Row { - if (feedState.isNotEmpty()) { + if (feedState.isNotEmpty() || navDrawerState.isNotEmpty()) { Scaffold( modifier = Modifier .weight(1f), diff --git a/core/src/commonMain/kotlin/com/prof18/feedflow/core/model/DrawerItem.kt b/core/src/commonMain/kotlin/com/prof18/feedflow/core/model/DrawerItem.kt index 6fe85725..5207050a 100644 --- a/core/src/commonMain/kotlin/com/prof18/feedflow/core/model/DrawerItem.kt +++ b/core/src/commonMain/kotlin/com/prof18/feedflow/core/model/DrawerItem.kt @@ -6,7 +6,13 @@ data class NavDrawerState( val timeline: List = listOf(), val categories: List = listOf(), val feedSourcesByCategory: Map> = mapOf(), -) +) { + fun isEmpty(): Boolean = + categories.isEmpty() && feedSourcesByCategory.isEmpty() + + fun isNotEmpty(): Boolean = + categories.isNotEmpty() || feedSourcesByCategory.isNotEmpty() +} sealed class DrawerItem { data object Timeline : DrawerItem() diff --git a/desktopApp/src/jvmMain/kotlin/com/prof18/feedflow/home/HomeScreen.desktop.kt b/desktopApp/src/jvmMain/kotlin/com/prof18/feedflow/home/HomeScreen.desktop.kt index 0e8c4cec..094f9ba6 100644 --- a/desktopApp/src/jvmMain/kotlin/com/prof18/feedflow/home/HomeScreen.desktop.kt +++ b/desktopApp/src/jvmMain/kotlin/com/prof18/feedflow/home/HomeScreen.desktop.kt @@ -148,7 +148,7 @@ private fun CompactView( val scope = rememberCoroutineScope() val drawerState = rememberDrawerState(initialValue = DrawerValue.Closed) - if (feedState.isEmpty()) { + if (feedState.isEmpty() && navDrawerState.isEmpty()) { HomeScreenContent( paddingValues = paddingValues, loadingState = loadingState, @@ -262,7 +262,7 @@ private fun MediumView( AnimatedVisibility( modifier = Modifier .weight(1f), - visible = isDrawerMenuFullVisible && feedState.isNotEmpty(), + visible = isDrawerMenuFullVisible && (feedState.isNotEmpty() || navDrawerState.isNotEmpty()), ) { Scaffold { paddingValues -> Drawer( @@ -333,7 +333,7 @@ private fun ExpandedView( AnimatedVisibility( modifier = Modifier .weight(1f), - visible = feedState.isNotEmpty(), + visible = feedState.isNotEmpty() || navDrawerState.isNotEmpty(), ) { Scaffold { paddingValues -> Drawer( @@ -406,42 +406,45 @@ private fun HomeScreenContent( onFeedItemLongClick: (FeedItemClickedInfo) -> Unit, onAddFeedClick: () -> Unit, ) { - when { - loadingState is NoFeedSourcesStatus -> NoFeedsSourceView( - modifier = modifier - .padding(paddingValues), - onAddFeedClick = { - onAddFeedClick() - }, - ) - - !loadingState.isLoading() && feedState.isEmpty() -> EmptyFeedView( - modifier = modifier - .padding(paddingValues), - onReloadClick = { - onRefresh() - }, - ) + Column( + modifier = modifier + .padding(paddingValues) + ) { + val unReadCount = feedState.count { !it.isRead } - else -> FeedWithContentView( - modifier = modifier - .padding(paddingValues) - .fillMaxSize(), - paddingValues = paddingValues, - feedState = feedState, - loadingState = loadingState, - listState = listState, - updateReadStatus = updateReadStatus, + FeedContentToolbar( + unReadCount = unReadCount, showDrawerMenu = showDrawerMenu, - isDrawerMenuOpen = isDrawerMenuOpen, + isDrawerOpen = isDrawerMenuOpen, onDrawerMenuClick = onDrawerMenuClick, - onFeedItemClick = onFeedItemClick, - onFeedItemLongClick = onFeedItemLongClick, ) + + when { + loadingState is NoFeedSourcesStatus -> NoFeedsSourceView( + onAddFeedClick = { + onAddFeedClick() + }, + ) + + !loadingState.isLoading() && feedState.isEmpty() -> EmptyFeedView( + onReloadClick = { + onRefresh() + }, + ) + + else -> FeedWithContentView( + paddingValues = paddingValues, + feedState = feedState, + loadingState = loadingState, + listState = listState, + updateReadStatus = updateReadStatus, + onFeedItemClick = onFeedItemClick, + onFeedItemLongClick = onFeedItemLongClick, + ) + } } } -@Suppress("LongParameterList") @Composable private fun FeedWithContentView( modifier: Modifier = Modifier, @@ -449,9 +452,6 @@ private fun FeedWithContentView( feedState: List, loadingState: FeedUpdateStatus, listState: LazyListState, - showDrawerMenu: Boolean, - isDrawerMenuOpen: Boolean, - onDrawerMenuClick: () -> Unit, updateReadStatus: (Int) -> Unit, onFeedItemClick: (FeedItemClickedInfo) -> Unit, onFeedItemLongClick: (FeedItemClickedInfo) -> Unit, @@ -459,15 +459,6 @@ private fun FeedWithContentView( Column( modifier = modifier, ) { - val unReadCount = feedState.count { !it.isRead } - - FeedContentToolbar( - unReadCount = unReadCount, - showDrawerMenu = showDrawerMenu, - isDrawerOpen = isDrawerMenuOpen, - onDrawerMenuClick = onDrawerMenuClick, - ) - FeedLoader(loadingState = loadingState) Box( diff --git a/sharedUI/src/commonMain/kotlin/com/prof18/feedflow/ui/home/components/Drawer.kt b/sharedUI/src/commonMain/kotlin/com/prof18/feedflow/ui/home/components/Drawer.kt index 41099e7f..814185fd 100644 --- a/sharedUI/src/commonMain/kotlin/com/prof18/feedflow/ui/home/components/Drawer.kt +++ b/sharedUI/src/commonMain/kotlin/com/prof18/feedflow/ui/home/components/Drawer.kt @@ -67,8 +67,12 @@ fun Drawer( currentFeedFilter = currentFeedFilter, onFeedFilterSelected = onFeedFilterSelected, ) + } - DrawerDivider() + if (navDrawerState.categories.isNotEmpty() || navDrawerState.feedSourcesByCategory.isNotEmpty()) { + item { + DrawerDivider() + } } if (navDrawerState.categories.isNotEmpty()) {