diff --git a/app/src/main/kotlin/com/infomaniak/auth/ui/navigation/NavDestination.kt b/app/src/main/kotlin/com/infomaniak/auth/ui/navigation/NavDestination.kt index e22de401..7aebe44b 100644 --- a/app/src/main/kotlin/com/infomaniak/auth/ui/navigation/NavDestination.kt +++ b/app/src/main/kotlin/com/infomaniak/auth/ui/navigation/NavDestination.kt @@ -52,14 +52,6 @@ sealed interface NavDestination : NavKey { @Serializable data object Home : NavDestination - sealed interface HomeSubDestination : NavDestination { - @Serializable - data object AccountList : HomeSubDestination - - @Serializable - data object Settings : HomeSubDestination - } - //endregion //region Settings @@ -84,3 +76,13 @@ sealed interface NavDestination : NavKey { @Serializable data class AccountDetails(val accountId: Long) : NavDestination } + +@Immutable +@Serializable +sealed interface HomeSubDestination : NavKey { + @Serializable + data object AccountList : HomeSubDestination + + @Serializable + data object Settings : HomeSubDestination +} diff --git a/app/src/main/kotlin/com/infomaniak/auth/ui/navigation/NavigationEntryProvider.kt b/app/src/main/kotlin/com/infomaniak/auth/ui/navigation/NavigationEntryProvider.kt index 3165ad70..6bd6e366 100644 --- a/app/src/main/kotlin/com/infomaniak/auth/ui/navigation/NavigationEntryProvider.kt +++ b/app/src/main/kotlin/com/infomaniak/auth/ui/navigation/NavigationEntryProvider.kt @@ -105,14 +105,14 @@ fun baseEntryProvider( } fun homeEntryProvider(rootBackStack: NavBackStack): (NavKey) -> NavEntry = entryProvider { - entry { + entry { AccountListScreen( onAccountClicked = { account -> rootBackStack.add(NavDestination.AccountDetails(account.id)) }, ) } - entry { + entry { SettingsScreen( onThemeClicked = { rootBackStack.add(NavDestination.Theme) diff --git a/app/src/main/kotlin/com/infomaniak/auth/ui/screen/home/HomeScreen.kt b/app/src/main/kotlin/com/infomaniak/auth/ui/screen/home/HomeScreen.kt index 9367a57c..77d1f3af 100644 --- a/app/src/main/kotlin/com/infomaniak/auth/ui/screen/home/HomeScreen.kt +++ b/app/src/main/kotlin/com/infomaniak/auth/ui/screen/home/HomeScreen.kt @@ -41,6 +41,7 @@ import com.google.accompanist.permissions.ExperimentalPermissionsApi import com.infomaniak.auth.R import com.infomaniak.auth.ui.components.AuthenticatorFab import com.infomaniak.auth.ui.components.InfomaniakAuthenticatorTopAppBar +import com.infomaniak.auth.ui.navigation.HomeSubDestination import com.infomaniak.auth.ui.navigation.NavDestination import com.infomaniak.auth.ui.navigation.homeEntryProvider import com.infomaniak.auth.ui.navigation.tryPopLast @@ -70,7 +71,7 @@ fun HomeScreen( rootBackStack: NavBackStack, modifier: Modifier = Modifier ) { - val homeBackStack = rememberNavBackStack(NavDestination.HomeSubDestination.AccountList) + val homeBackStack = rememberNavBackStack(HomeSubDestination.AccountList) SinglePaneScaffold( modifier = modifier, @@ -81,7 +82,7 @@ fun HomeScreen( AuthenticatorBottomBar( backStack = homeBackStack, onMyAccountsClicked = { homeBackStack.tryPopLast() }, - onSettingsClicked = { homeBackStack.add(NavDestination.HomeSubDestination.Settings) } + onSettingsClicked = { homeBackStack.add(HomeSubDestination.Settings) } ) }, floatingActionButton = { @@ -115,13 +116,13 @@ private fun AuthenticatorBottomBar( verticalAlignment = Alignment.CenterVertically, ) { NavigationBarItem( - selected = backStack.last() is NavDestination.HomeSubDestination.AccountList, + selected = backStack.last() is HomeSubDestination.AccountList, onClick = onMyAccountsClicked, icon = { Icon(painterResource(R.drawable.accounts), null) }, label = { Text(stringResource(R.string.accountsTitle)) }, ) NavigationBarItem( - selected = backStack.last() is NavDestination.HomeSubDestination.Settings, + selected = backStack.last() is HomeSubDestination.Settings, onClick = onSettingsClicked, icon = { Icon(painterResource(R.drawable.settings), null) }, label = { Text(stringResource(R.string.settingsTitle)) },