commit a196092c2db713730477c2341a84eda2a68a7a42
parent 3804516e9976989e13e449cd123114af61649abd
Author: rhunk <101876869+rhunk@users.noreply.github.com>
Date:   Tue, 21 May 2024 23:14:38 +0200

pref(ui): navigation

Diffstat:
Mapp/src/main/kotlin/me/rhunk/snapenhance/ui/manager/Navigation.kt | 16++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/Navigation.kt b/app/src/main/kotlin/me/rhunk/snapenhance/ui/manager/Navigation.kt @@ -35,14 +35,18 @@ class Navigation( @Composable fun TopBar() { val navBackStackEntry by navController.currentBackStackEntryAsState() + val currentRoute = remember(navBackStackEntry) { routes.getCurrentRoute(navBackStackEntry) } - val canGoBack = remember (navBackStackEntry) { routes.getCurrentRoute(navBackStackEntry)?.let { + val canGoBack = remember(navBackStackEntry) { currentRoute?.let { !it.routeInfo.primary || it.routeInfo.childIds.contains(routes.currentDestination) } == true } TopAppBar(title = { - val currentRoute = routes.getCurrentRoute(navBackStackEntry) - currentRoute?.title?.invoke() ?: Text(text = currentRoute?.routeInfo?.translatedKey?.value ?: "Unknown Page") + currentRoute?.apply { + title?.invoke() ?: routeInfo.translatedKey?.value?.let { + Text(text = it) + } + } }, navigationIcon = { val backButtonAnimation by animateFloatAsState(if (canGoBack) 1f else 0f, label = "backButtonAnimation" @@ -65,17 +69,17 @@ class Navigation( } } }, actions = { - routes.getCurrentRoute(navBackStackEntry)?.topBarActions?.invoke(this) + currentRoute?.topBarActions?.invoke(this) }) } @Composable fun BottomBar() { val navBackStackEntry by navController.currentBackStackEntryAsState() + val currentRoute = remember(navBackStackEntry) { routes.getCurrentRoute(navBackStackEntry) } val primaryRoutes = remember { routes.getRoutes().filter { it.routeInfo.primary } } NavigationBar { - val currentRoute = routes.getCurrentRoute(navBackStackEntry) primaryRoutes.forEach { route -> NavigationBarItem( alwaysShowLabel = true, @@ -103,7 +107,7 @@ class Navigation( @Composable fun FloatingActionButton() { val navBackStackEntry by navController.currentBackStackEntryAsState() - routes.getCurrentRoute(navBackStackEntry)?.floatingActionButton?.invoke() + remember(navBackStackEntry) { routes.getCurrentRoute(navBackStackEntry) }?.floatingActionButton?.invoke() } @Composable