From 918a13d75a9e45a94429ae6f0898f968f489e60b Mon Sep 17 00:00:00 2001 From: Owen LeJeune Date: Fri, 2 Jun 2023 18:58:15 -0400 Subject: [PATCH] fix back nav in bottom bar --- app/build.gradle | 2 +- .../com/owenlejeune/tvtime/MainActivity.kt | 18 +++++++----------- .../owenlejeune/tvtime/TvTimeApplication.kt | 1 - .../tvtime/extensions/NavExtensions.kt | 12 ++++++++++++ 4 files changed, 20 insertions(+), 13 deletions(-) create mode 100644 app/src/main/java/com/owenlejeune/tvtime/extensions/NavExtensions.kt diff --git a/app/build.gradle b/app/build.gradle index e0beabc..9119e92 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -71,7 +71,7 @@ dependencies { def compose = composeVersion def compose_material3 = "1.0.0-alpha13" def compose_accompanist = "0.24.10-beta" - def compose_navigation = "2.4.2" + def compose_navigation = "2.5.3" def compose_paging = "1.0.0-alpha16" def compose_constraint_layout = "1.0.1" def compose_activity = "1.4.0" diff --git a/app/src/main/java/com/owenlejeune/tvtime/MainActivity.kt b/app/src/main/java/com/owenlejeune/tvtime/MainActivity.kt index 1f589b7..2fc89ed 100644 --- a/app/src/main/java/com/owenlejeune/tvtime/MainActivity.kt +++ b/app/src/main/java/com/owenlejeune/tvtime/MainActivity.kt @@ -2,6 +2,7 @@ package com.owenlejeune.tvtime import android.os.Bundle import android.util.Log +import androidx.activity.compose.BackHandler import androidx.activity.compose.setContent import androidx.compose.animation.rememberSplineBasedDecay import androidx.compose.foundation.layout.* @@ -22,6 +23,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.lifecycle.lifecycleScope import androidx.navigation.NavController +import androidx.navigation.NavGraph.Companion.findStartDestination import androidx.navigation.NavHostController import androidx.navigation.NavType import androidx.navigation.compose.NavHost @@ -31,6 +33,7 @@ import androidx.navigation.compose.rememberNavController import androidx.navigation.navArgument import com.kieronquinn.monetcompat.app.MonetCompatActivity import com.owenlejeune.tvtime.extensions.WindowSizeClass +import com.owenlejeune.tvtime.extensions.navigateInBottomBar import com.owenlejeune.tvtime.extensions.rememberWindowSizeClass import com.owenlejeune.tvtime.preferences.AppPreferences import com.owenlejeune.tvtime.ui.navigation.BottomNavItem @@ -206,18 +209,10 @@ class MainActivity : MonetCompatActivity() { appBarTitle: MutableState, item: BottomNavItem ) { - navigateToRoute(navController, item.route) + navController.navigateInBottomBar(item.route) appBarTitle.value = item.name } - private fun navigateToRoute(navController: NavController, route: String) { - navController.navigate(route) { - popUpTo(route) - launchSingleTop = true - restoreState = true - } - } - @Composable private fun MainContent( windowSize: WindowSizeClass, @@ -338,8 +333,9 @@ class MainActivity : MonetCompatActivity() { mainNavStartRoute: String = BottomNavItem.SortedItems[0].route ) { Column { - val navBackStackEntry by navController.currentBackStackEntryAsState() - val currentRoute = navBackStackEntry?.destination?.route + BackHandler(enabled = true) { + finish() + } MainNavGraph( activity = this@MainActivity, diff --git a/app/src/main/java/com/owenlejeune/tvtime/TvTimeApplication.kt b/app/src/main/java/com/owenlejeune/tvtime/TvTimeApplication.kt index f61a824..7b8a7b4 100644 --- a/app/src/main/java/com/owenlejeune/tvtime/TvTimeApplication.kt +++ b/app/src/main/java/com/owenlejeune/tvtime/TvTimeApplication.kt @@ -34,7 +34,6 @@ class TvTimeApplication: Application() { ) } - MonetCompat.enablePaletteCompat() MonetCompat.chromaMultiplier = preferences.chromaMultiplier MonetCompat.wallpaperColorPicker = { diff --git a/app/src/main/java/com/owenlejeune/tvtime/extensions/NavExtensions.kt b/app/src/main/java/com/owenlejeune/tvtime/extensions/NavExtensions.kt new file mode 100644 index 0000000..7aaf4ea --- /dev/null +++ b/app/src/main/java/com/owenlejeune/tvtime/extensions/NavExtensions.kt @@ -0,0 +1,12 @@ +package com.owenlejeune.tvtime.extensions + +import androidx.navigation.NavController +import androidx.navigation.NavGraph.Companion.findStartDestination + +fun NavController.navigateInBottomBar(route: String) = navigate(route) { + popUpTo(graph.findStartDestination().id) { + inclusive = true + } + launchSingleTop = true + restoreState = true +} \ No newline at end of file