60 lines
2.1 KiB
Kotlin
Raw Normal View History

2026-06-09 16:27:40 +07:00
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()
}
)
}
}
}