Skip to content

Commit

Permalink
Fix drawer visibility when the list is empty on Android and Desktop
Browse files Browse the repository at this point in the history
  • Loading branch information
prof18 committed Oct 30, 2023
1 parent 0398a57 commit d354b63
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 49 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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(
Expand Down Expand Up @@ -231,7 +231,7 @@ internal fun HomeScreen(

WindowWidthSizeClass.Expanded -> {
Row {
if (feedState.isNotEmpty()) {
if (feedState.isNotEmpty() || navDrawerState.isNotEmpty()) {
Scaffold(
modifier = Modifier
.weight(1f),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,13 @@ data class NavDrawerState(
val timeline: List<DrawerItem> = listOf(),
val categories: List<DrawerItem> = listOf(),
val feedSourcesByCategory: Map<FeedSourceCategoryWrapper, List<DrawerItem>> = mapOf(),
)
) {
fun isEmpty(): Boolean =
categories.isEmpty() && feedSourcesByCategory.isEmpty()

fun isNotEmpty(): Boolean =
categories.isNotEmpty() || feedSourcesByCategory.isNotEmpty()
}

sealed class DrawerItem {
data object Timeline : DrawerItem()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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(
Expand Down Expand Up @@ -333,7 +333,7 @@ private fun ExpandedView(
AnimatedVisibility(
modifier = Modifier
.weight(1f),
visible = feedState.isNotEmpty(),
visible = feedState.isNotEmpty() || navDrawerState.isNotEmpty(),
) {
Scaffold { paddingValues ->
Drawer(
Expand Down Expand Up @@ -406,68 +406,59 @@ 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,
paddingValues: PaddingValues,
feedState: List<FeedItem>,
loadingState: FeedUpdateStatus,
listState: LazyListState,
showDrawerMenu: Boolean,
isDrawerMenuOpen: Boolean,
onDrawerMenuClick: () -> Unit,
updateReadStatus: (Int) -> Unit,
onFeedItemClick: (FeedItemClickedInfo) -> Unit,
onFeedItemLongClick: (FeedItemClickedInfo) -> Unit,
) {
Column(
modifier = modifier,
) {
val unReadCount = feedState.count { !it.isRead }

FeedContentToolbar(
unReadCount = unReadCount,
showDrawerMenu = showDrawerMenu,
isDrawerOpen = isDrawerMenuOpen,
onDrawerMenuClick = onDrawerMenuClick,
)

FeedLoader(loadingState = loadingState)

Box(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,12 @@ fun Drawer(
currentFeedFilter = currentFeedFilter,
onFeedFilterSelected = onFeedFilterSelected,
)
}

DrawerDivider()
if (navDrawerState.categories.isNotEmpty() || navDrawerState.feedSourcesByCategory.isNotEmpty()) {
item {
DrawerDivider()
}
}

if (navDrawerState.categories.isNotEmpty()) {
Expand Down

0 comments on commit d354b63

Please sign in to comment.