60 lines
2.1 KiB
Kotlin
60 lines
2.1 KiB
Kotlin
package com.longnh15.heimdall.navigation
|
|
|
|
import androidx.compose.runtime.Composable
|
|
import androidx.compose.ui.Modifier
|
|
import androidx.navigation.NavHostController
|
|
import androidx.navigation.compose.NavHost
|
|
import androidx.navigation.compose.composable
|
|
import androidx.navigation.compose.rememberNavController
|
|
import com.longnh15.heimdall.ui.onboarding.OnboardingPage
|
|
import com.longnh15.heimdall.ui.onboarding.OnboardingViewModel
|
|
import com.longnh15.heimdall.ui.vault.VaultScreen
|
|
import com.longnh15.heimdall.ui.vault.VaultViewModel
|
|
import com.longnh15.heimdall.ui.vault.edit.AddEditVaultItemScreen
|
|
import com.longnh15.heimdall.ui.vault.edit.AddEditVaultViewModel
|
|
import org.koin.compose.viewmodel.koinViewModel
|
|
|
|
@Composable
|
|
fun HeimdallNavGraph(
|
|
modifier: Modifier = Modifier,
|
|
navController: NavHostController = rememberNavController(),
|
|
startDestination: Screen = Screen.Onboarding,
|
|
isAutofillServiceEnabled: () -> Boolean,
|
|
onCompleteOnboarding: () -> Unit,
|
|
) {
|
|
NavHost(
|
|
navController = navController,
|
|
startDestination = startDestination,
|
|
modifier = modifier
|
|
) {
|
|
composable<Screen.Onboarding> {
|
|
OnboardingPage(
|
|
viewModel = koinViewModel<OnboardingViewModel>(),
|
|
isAutofillEnabled = isAutofillServiceEnabled,
|
|
navigateToVault = {
|
|
onCompleteOnboarding()
|
|
navController.navigate(Screen.Vault) {
|
|
popUpTo(Screen.Onboarding) { inclusive = true }
|
|
}
|
|
}
|
|
)
|
|
}
|
|
composable<Screen.Vault> {
|
|
VaultScreen(
|
|
viewModel = koinViewModel<VaultViewModel>(),
|
|
navigateToAddScreen = {
|
|
navController.navigate(Screen.NewVaultItem)
|
|
}
|
|
)
|
|
}
|
|
composable<Screen.NewVaultItem> {
|
|
AddEditVaultItemScreen(
|
|
viewModel = koinViewModel<AddEditVaultViewModel>(),
|
|
popScreen = {
|
|
navController.navigateUp()
|
|
}
|
|
)
|
|
}
|
|
}
|
|
}
|