package com.example.mycrib import androidx.compose.animation.AnimatedVisibility import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.safeContentPadding import androidx.compose.material3.Button import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import com.mycrib.android.ui.screens.AddResidenceScreen import com.mycrib.android.ui.screens.HomeScreen import com.mycrib.android.ui.screens.LoginScreen import com.mycrib.android.ui.screens.RegisterScreen import com.mycrib.android.ui.screens.ResidenceDetailScreen import com.mycrib.android.ui.screens.ResidencesScreen import com.mycrib.android.ui.screens.TasksScreen import org.jetbrains.compose.resources.painterResource import org.jetbrains.compose.ui.tooling.preview.Preview import androidx.navigation.compose.NavHost import androidx.navigation.compose.rememberNavController import androidx.navigation.compose.composable import mycrib.composeapp.generated.resources.Res import mycrib.composeapp.generated.resources.compose_multiplatform @Composable @Preview fun App() { var isLoggedIn by remember { mutableStateOf(com.mycrib.storage.TokenStorage.hasToken()) } val navController = rememberNavController() // Check for stored token on app start LaunchedEffect(Unit) { isLoggedIn = com.mycrib.storage.TokenStorage.hasToken() } Surface( modifier = Modifier.fillMaxSize(), color = MaterialTheme.colorScheme.background ) { NavHost( navController = navController, startDestination = if (isLoggedIn) "residences" else "login" ) { composable("login") { LoginScreen( onLoginSuccess = { isLoggedIn = true navController.navigate("residences") { popUpTo("login") { inclusive = true } } }, onNavigateToRegister = { navController.navigate("register") } ) } composable("register") { RegisterScreen( onRegisterSuccess = { isLoggedIn = true navController.navigate("residences") { popUpTo("register") { inclusive = true } } }, onNavigateBack = { navController.popBackStack() } ) } composable("home") { HomeScreen( onNavigateToResidences = { navController.navigate("residences") }, onNavigateToTasks = { navController.navigate("tasks") }, onLogout = { // Clear token on logout com.mycrib.storage.TokenStorage.clearToken() isLoggedIn = false navController.navigate("login") { popUpTo("home") { inclusive = true } } } ) } composable("residences") { ResidencesScreen( onResidenceClick = { residenceId -> navController.navigate("residence_detail/$residenceId") }, onAddResidence = { navController.navigate("add_residence") } ) } composable("add_residence") { AddResidenceScreen( onNavigateBack = { navController.popBackStack() }, onResidenceCreated = { navController.popBackStack() } ) } composable("tasks") { TasksScreen( onNavigateBack = { navController.popBackStack() } ) } composable("residence_detail/{residenceId}") { backStackEntry -> // val residenceId = backStackEntry.arguments?.getString("residenceId")?.toIntOrNull() val residenceId = backStackEntry.arguments ?.get("residenceId") ?.toString() ?.toIntOrNull() if (residenceId != null) { ResidenceDetailScreen( residenceId = residenceId, onNavigateBack = { navController.popBackStack() } ) } } } } /* MaterialTheme { var showContent by remember { mutableStateOf(false) } Column( modifier = Modifier .background(MaterialTheme.colorScheme.primaryContainer) .safeContentPadding() .fillMaxSize(), horizontalAlignment = Alignment.CenterHorizontally, ) { Button(onClick = { showContent = !showContent }) { Text("Click me!") } AnimatedVisibility(showContent) { val greeting = remember { Greeting().greet() } Column( modifier = Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally, ) { Image(painterResource(Res.drawable.compose_multiplatform), null) Text("Compose: $greeting") } } } } */ }