package com.example.match import androidx.compose.runtime.Composable import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.viewmodel.compose.viewModel import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController import androidx.navigation.navArgument import com.example.match.ui.home.HomePage import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import com.example.match.ui.home.HomeViewModel import com.example.match.ui.matchdetail.MatchDetailScreen @Composable fun AppNavHost() { val navController = rememberNavController() NavHost( navController = navController, startDestination = "splash" ) { // Splash composable("splash") { SplashScreen( onTimeout = { navController.navigate("login") { popUpTo("splash") { inclusive = true } } } ) } // Login composable( route = "login", arguments = listOf(navArgument("fromApp") { defaultValue = false }) ) { backStackEntry -> val fromApp = backStackEntry.arguments?.getBoolean("fromApp") ?: false val sessionViewModel: SessionViewModel = viewModel() val loginViewModel: LoginViewModel = viewModel() (if (!fromApp) { { sessionViewModel.setLoggedIn(false) navController.navigate("home") { popUpTo("login") { inclusive = true } } } } else null)?.let { LoginScreen( loginViewModel = loginViewModel, onSkip = it, onLoginSuccess = { sessionViewModel.setLoggedIn(true) navController.navigate("home") { popUpTo("login") { inclusive = true } } }, onRegisterClicked = { navController.navigate("register") }, onForgotPassword = { }, onClose = if (fromApp) { { navController.popBackStack() } } else null ) } } composable("register") { RegisterScreen( onRegisterSuccess = { successMsg -> navController.navigate("home") { popUpTo("register") { inclusive = true } } }, onAlreadyHaveAccount = { navController.navigate("login") } ) } // Home composable("home") { val viewModel: HomeViewModel = hiltViewModel() val liveScores by viewModel.todayLiveScores.collectAsState() val upcomingMatches by viewModel.upcomingMatches.collectAsState() HomePage( liveScores = liveScores, upcomingMatches = upcomingMatches, currentTab = "home", onNavigationClick = { destination -> navController.navigate(destination) }, navController = navController // Pass navController here ) } composable("matchDetail/{matchId}") { backStackEntry -> val matchId = backStackEntry.arguments?.getString("matchId") ?: "" val sessionViewModel: SessionViewModel = viewModel() val userId by sessionViewModel.userId.collectAsState() MatchDetailScreen( matchId = matchId, userId = userId, onBackClick = { navController.popBackStack() }, onRequireLogin = { navController.navigate("login?fromApp=true") } ) } composable("profile") { ProfileScreen( onClose = { navController.navigate("home") } ) } composable("settings") { SettingsScreen( onClose = { navController.navigate("home") } ) } } }