Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -84,3 +76,13 @@ sealed interface NavDestination : NavKey {
@Serializable
data class AccountDetails(val accountId: Long) : NavDestination
}

Comment thread
baillyjamy marked this conversation as resolved.
@Immutable
@Serializable
sealed interface HomeSubDestination : NavKey {
@Serializable
data object AccountList : HomeSubDestination

@Serializable
data object Settings : HomeSubDestination
}
Original file line number Diff line number Diff line change
Expand Up @@ -105,14 +105,14 @@ fun baseEntryProvider(
}

fun homeEntryProvider(rootBackStack: NavBackStack<NavKey>): (NavKey) -> NavEntry<NavKey> = entryProvider {
entry<NavDestination.HomeSubDestination.AccountList> {
entry<HomeSubDestination.AccountList> {
AccountListScreen(
onAccountClicked = { account ->
rootBackStack.add(NavDestination.AccountDetails(account.id))
},
)
}
entry<NavDestination.HomeSubDestination.Settings> {
entry<HomeSubDestination.Settings> {
SettingsScreen(
onThemeClicked = {
rootBackStack.add(NavDestination.Theme)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -70,7 +71,7 @@ fun HomeScreen(
rootBackStack: NavBackStack<NavKey>,
modifier: Modifier = Modifier
) {
val homeBackStack = rememberNavBackStack(NavDestination.HomeSubDestination.AccountList)
val homeBackStack = rememberNavBackStack(HomeSubDestination.AccountList)

SinglePaneScaffold(
modifier = modifier,
Expand All @@ -81,7 +82,7 @@ fun HomeScreen(
AuthenticatorBottomBar(
backStack = homeBackStack,
onMyAccountsClicked = { homeBackStack.tryPopLast() },
onSettingsClicked = { homeBackStack.add(NavDestination.HomeSubDestination.Settings) }
onSettingsClicked = { homeBackStack.add(HomeSubDestination.Settings) }
)
},
floatingActionButton = {
Expand Down Expand Up @@ -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)) },
Expand Down
Loading