From a39005c36f2a77103a01f805c401381f6036b2e4 Mon Sep 17 00:00:00 2001 From: Kasem SM <83884225+kasem-sm@users.noreply.github.com> Date: Fri, 13 May 2022 18:23:19 +0530 Subject: [PATCH] Show bottom-bar only when current-destination is TopLevel. --- .../navigation/NiaTopLevelNavigation.kt | 13 +++++++++++++ .../google/samples/apps/nowinandroid/ui/NiaApp.kt | 11 +++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/google/samples/apps/nowinandroid/navigation/NiaTopLevelNavigation.kt b/app/src/main/java/com/google/samples/apps/nowinandroid/navigation/NiaTopLevelNavigation.kt index f2404e88c..de653fb79 100644 --- a/app/src/main/java/com/google/samples/apps/nowinandroid/navigation/NiaTopLevelNavigation.kt +++ b/app/src/main/java/com/google/samples/apps/nowinandroid/navigation/NiaTopLevelNavigation.kt @@ -22,6 +22,7 @@ import androidx.compose.material.icons.filled.Upcoming import androidx.compose.material.icons.outlined.Grid3x3 import androidx.compose.material.icons.outlined.Upcoming import androidx.compose.ui.graphics.vector.ImageVector +import androidx.navigation.NavDestination import androidx.navigation.NavGraph.Companion.findStartDestination import androidx.navigation.NavHostController import com.google.samples.apps.nowinandroid.feature.foryou.R.string.for_you @@ -78,3 +79,15 @@ val TOP_LEVEL_DESTINATIONS = listOf( iconTextId = interests ) ) + +/** + * @return true when the current destination is + * top level destination else false. + */ +fun NavDestination?.isTopLevelDestination(): Boolean { + return when (this?.route) { + ForYouDestination.route -> true + InterestsDestination.route -> true + else -> false + } +} diff --git a/app/src/main/java/com/google/samples/apps/nowinandroid/ui/NiaApp.kt b/app/src/main/java/com/google/samples/apps/nowinandroid/ui/NiaApp.kt index 3a3e25b66..f9c7833cb 100644 --- a/app/src/main/java/com/google/samples/apps/nowinandroid/ui/NiaApp.kt +++ b/app/src/main/java/com/google/samples/apps/nowinandroid/ui/NiaApp.kt @@ -59,6 +59,7 @@ import com.google.samples.apps.nowinandroid.navigation.NiaNavHost import com.google.samples.apps.nowinandroid.navigation.NiaTopLevelNavigation import com.google.samples.apps.nowinandroid.navigation.TOP_LEVEL_DESTINATIONS import com.google.samples.apps.nowinandroid.navigation.TopLevelDestination +import com.google.samples.apps.nowinandroid.navigation.isTopLevelDestination @OptIn(ExperimentalMaterial3Api::class, ExperimentalLayoutApi::class) @Composable @@ -79,10 +80,12 @@ fun NiaApp(windowSizeClass: WindowSizeClass) { contentColor = MaterialTheme.colorScheme.onBackground, bottomBar = { if (windowSizeClass.widthSizeClass == WindowWidthSizeClass.Compact) { - NiABottomBar( - onNavigateToTopLevelDestination = niaTopLevelNavigation::navigateTo, - currentDestination = currentDestination - ) + if (currentDestination.isTopLevelDestination()) { + NiABottomBar( + onNavigateToTopLevelDestination = niaTopLevelNavigation::navigateTo, + currentDestination = currentDestination + ) + } } } ) { padding ->