diff --git a/app/src/main/java/com/github/damontecres/dolphin/MainActivity.kt b/app/src/main/java/com/github/damontecres/dolphin/MainActivity.kt index d54bcf55..d4036443 100644 --- a/app/src/main/java/com/github/damontecres/dolphin/MainActivity.kt +++ b/app/src/main/java/com/github/damontecres/dolphin/MainActivity.kt @@ -92,7 +92,7 @@ class MainActivity : AppCompatActivity() { remember(appPreferences) { createDeviceProfile(this@MainActivity, preferences, false) } - val backStack = rememberNavBackStack(Destination.Main) + val backStack = rememberNavBackStack(Destination.Main()) val navigationManager = NavigationManager(backStack) if (server != null && user != null) { diff --git a/app/src/main/java/com/github/damontecres/dolphin/ui/nav/ApplicationContent.kt b/app/src/main/java/com/github/damontecres/dolphin/ui/nav/ApplicationContent.kt index d9fc84ac..a56acee0 100644 --- a/app/src/main/java/com/github/damontecres/dolphin/ui/nav/ApplicationContent.kt +++ b/app/src/main/java/com/github/damontecres/dolphin/ui/nav/ApplicationContent.kt @@ -24,7 +24,7 @@ fun ApplicationContent( ) { NavDisplay( backStack = navigationManager.backStack, - onBack = { navigationManager.goBack() }, + onBack = { repeat(it) { navigationManager.goBack() } }, entryDecorators = listOf( rememberSceneSetupNavEntryDecorator(), diff --git a/app/src/main/java/com/github/damontecres/dolphin/ui/nav/Destination.kt b/app/src/main/java/com/github/damontecres/dolphin/ui/nav/Destination.kt index 925bc4b2..47075d72 100644 --- a/app/src/main/java/com/github/damontecres/dolphin/ui/nav/Destination.kt +++ b/app/src/main/java/com/github/damontecres/dolphin/ui/nav/Destination.kt @@ -26,7 +26,9 @@ sealed class Destination( data object UserList : Destination(true) @Serializable - data object Main : Destination() + data class Main( + val id: Long = 0L, + ) : Destination() @Serializable data object Settings : Destination(true) diff --git a/app/src/main/java/com/github/damontecres/dolphin/ui/nav/DestinationContent.kt b/app/src/main/java/com/github/damontecres/dolphin/ui/nav/DestinationContent.kt index 3251a7db..05a53c93 100644 --- a/app/src/main/java/com/github/damontecres/dolphin/ui/nav/DestinationContent.kt +++ b/app/src/main/java/com/github/damontecres/dolphin/ui/nav/DestinationContent.kt @@ -29,7 +29,7 @@ fun DestinationContent( modifier: Modifier = Modifier, ) { when (destination) { - Destination.Main -> + is Destination.Main -> MainPage( preferences = preferences, navigationManager = navigationManager, diff --git a/app/src/main/java/com/github/damontecres/dolphin/ui/nav/NavDrawer.kt b/app/src/main/java/com/github/damontecres/dolphin/ui/nav/NavDrawer.kt index 6bfe3a08..aebb26db 100644 --- a/app/src/main/java/com/github/damontecres/dolphin/ui/nav/NavDrawer.kt +++ b/app/src/main/java/com/github/damontecres/dolphin/ui/nav/NavDrawer.kt @@ -136,7 +136,13 @@ fun NavDrawer( IconNavItem( text = "Home", icon = Icons.Default.Home, - onClick = { navigationManager.goToHome() }, + onClick = { + if (destination is Destination.Main) { + navigationManager.reloadHome() + } else { + navigationManager.goToHome() + } + }, ) LazyColumn( state = listState, diff --git a/app/src/main/java/com/github/damontecres/dolphin/ui/nav/NavigationManager.kt b/app/src/main/java/com/github/damontecres/dolphin/ui/nav/NavigationManager.kt index ccb82cfb..f08c1645 100644 --- a/app/src/main/java/com/github/damontecres/dolphin/ui/nav/NavigationManager.kt +++ b/app/src/main/java/com/github/damontecres/dolphin/ui/nav/NavigationManager.kt @@ -15,7 +15,14 @@ class NavigationManager( } fun goToHome() { - backStack.clear() - backStack.add(Destination.Main) + while (backStack.size > 1) { + backStack.removeLastOrNull() + } + } + + fun reloadHome() { + goToHome() + val id = (backStack[0] as Destination.Main).id + 1 + backStack[0] = Destination.Main(id) } }