package com.suno.android.ui.screens.root.logged_out import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.ui.Modifier import androidx.hilt.navigation.compose.hiltViewModel import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController import com.suno.android.common_ui.animations.NavigationFadeInAnimation import com.suno.android.common_ui.animations.NavigationFadeOutAnimation import com.suno.android.ui.screens.navigation.NavDestination import com.suno.android.ui.screens.onboarding.LandingNavGraph @Composable fun LoggedOutNavGraph( loggedOutNavGraphVM: LoggedOutNavGraphVM = hiltViewModel(), onRedirectToHome: () -> Unit, onRedirectToOnboarding: () -> Unit, authLoading: Boolean, setAuthLoading: () -> Unit, ) { val loggedOutNavController = rememberNavController() LaunchedEffect(loggedOutNavController) { loggedOutNavController.addOnDestinationChangedListener { controller, destination, arguments -> loggedOutNavGraphVM.trackScreen( screenName = destination.route, ) } } LaunchedEffect(Unit) { loggedOutNavGraphVM.effectFlow().collect { rootEffect -> } } Box { NavHost( modifier = Modifier.fillMaxSize(), navController = loggedOutNavController, startDestination = NavDestination.Landing.LandingNavGraphDestination, enterTransition = { NavigationFadeInAnimation }, exitTransition = { NavigationFadeOutAnimation }, ) { composable { LandingNavGraph( landingNavGraphVM = hiltViewModel(), redirectToOnboarding = { onRedirectToOnboarding.invoke() }, redirectToHome = { onRedirectToHome.invoke() }, ) } } } }