From 679250f7da0e430e6f7e4cfcaa6288ccc29440c2 Mon Sep 17 00:00:00 2001 From: darken Date: Tue, 24 Feb 2026 16:04:02 +0100 Subject: [PATCH] fix(ui): Determine start destination before composing backstack Check onboarding state in MainActivity before creating the NavBackStack, so the correct screen is shown from the first frame. Removes the redundant async check from OverviewViewModel that caused the dashboard to briefly flash before redirecting to onboarding on fresh installs. --- .../main/java/eu/darken/capod/main/ui/MainActivity.kt | 10 +++++++++- .../darken/capod/main/ui/overview/OverviewViewModel.kt | 6 ------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/eu/darken/capod/main/ui/MainActivity.kt b/app/src/main/java/eu/darken/capod/main/ui/MainActivity.kt index 84a154fa..16fbfe61 100644 --- a/app/src/main/java/eu/darken/capod/main/ui/MainActivity.kt +++ b/app/src/main/java/eu/darken/capod/main/ui/MainActivity.kt @@ -18,6 +18,7 @@ import eu.darken.capod.common.navigation.NavigationController import eu.darken.capod.common.navigation.NavigationEntry import eu.darken.capod.common.theming.CapodTheme import eu.darken.capod.common.uix.Activity2 +import eu.darken.capod.main.core.GeneralSettings import javax.inject.Inject @AndroidEntryPoint @@ -25,14 +26,21 @@ class MainActivity : Activity2() { @Inject lateinit var navCtrl: NavigationController @Inject lateinit var navigationEntries: Set<@JvmSuppressWildcards NavigationEntry> + @Inject lateinit var generalSettings: GeneralSettings override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) installSplashScreen() enableEdgeToEdge() + val startDestination: NavKey = if (generalSettings.isOnboardingDone.value) { + Nav.Main.Overview + } else { + Nav.Main.Onboarding + } + setContent { - val backStack = rememberNavBackStack(Nav.Main.Overview) + val backStack = rememberNavBackStack(startDestination) navCtrl.setup(backStack) CapodTheme { diff --git a/app/src/main/java/eu/darken/capod/main/ui/overview/OverviewViewModel.kt b/app/src/main/java/eu/darken/capod/main/ui/overview/OverviewViewModel.kt index 45eb415d..d226424d 100644 --- a/app/src/main/java/eu/darken/capod/main/ui/overview/OverviewViewModel.kt +++ b/app/src/main/java/eu/darken/capod/main/ui/overview/OverviewViewModel.kt @@ -49,12 +49,6 @@ class OverviewViewModel @Inject constructor( private val profilesRepo: DeviceProfilesRepo, ) : ViewModel4(dispatcherProvider) { - init { - if (!generalSettings.isOnboardingDone.value) { - navTo(Nav.Main.Onboarding, popUpTo = Nav.Main.Overview, inclusive = true) - } - } - val requestPermissionEvent = SingleEventFlow() val launchUpgradeFlow = SingleEventFlow<(Activity) -> Unit>()