From 7eddd653c50ec55bad340079df0e6e536907c2dc Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Fri, 15 Oct 2021 14:26:29 +0530 Subject: [PATCH] android: refactor navigation destinations --- .../dev/msfjarvis/claw/android/ui/Destinations.kt | 6 ++++++ .../dev/msfjarvis/claw/android/ui/LobstersApp.kt | 10 +++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 android/src/main/kotlin/dev/msfjarvis/claw/android/ui/Destinations.kt diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/Destinations.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/Destinations.kt new file mode 100644 index 00000000..1e0d07e5 --- /dev/null +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/Destinations.kt @@ -0,0 +1,6 @@ +package dev.msfjarvis.claw.android.ui + +object Destinations { + const val Hottest = "hottest" + const val Comments = "comments/%s" +} diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/LobstersApp.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/LobstersApp.kt index 7ec5985a..f3f223d5 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/LobstersApp.kt +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/LobstersApp.kt @@ -50,6 +50,7 @@ fun LobstersApp( val scaffoldState = rememberScaffoldState() val listState = rememberLazyListState() val navController = rememberNavController() + var currentDestination by remember { mutableStateOf(Destinations.Hottest) } var isFabVisible by remember { mutableStateOf(true) } val nestedScrollConnection = remember { object : NestedScrollConnection { @@ -74,7 +75,7 @@ fun LobstersApp( } override fun viewComments(postId: String) { - navController.navigate("comments/$postId") + navController.navigate(Destinations.Comments.format(postId)) } override fun toggleSave(post: SavedPost) { @@ -82,6 +83,9 @@ fun LobstersApp( } } } + navController.addOnDestinationChangedListener { _, destination, _ -> + currentDestination = destination.route ?: Destinations.Hottest + } LobstersTheme(darkTheme = isSystemInDarkTheme()) { ProvideWindowInsets { val useDarkIcons = MaterialTheme.colors.isLight @@ -98,7 +102,7 @@ fun LobstersApp( topBar = { ClawAppBar(modifier = Modifier.statusBarsPadding()) }, floatingActionButton = { ClawFab( - isFabVisible = isFabVisible && navController.currentDestination?.route == "hottest", + isFabVisible = isFabVisible && currentDestination == "hottest", listState = listState, modifier = Modifier.navigationBarsPadding(), ) @@ -115,7 +119,7 @@ fun LobstersApp( Modifier.nestedScroll(nestedScrollConnection), ) } - composable("comments/{postId}") { backStackEntry -> + composable(Destinations.Comments.format("{postId}")) { backStackEntry -> CommentsPage( postId = requireNotNull(backStackEntry.arguments?.getString("postId")), getDetails = viewModel::getPostComments,