package com.example.livingai import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.SystemBarStyle import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.LaunchedEffect import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen import androidx.core.view.WindowCompat import com.example.livingai.pages.home.HomeViewModel import com.example.livingai.pages.navigation.NavGraph import com.example.livingai.pages.navigation.Route import com.example.livingai.ui.theme.LivingAITheme import org.koin.androidx.viewmodel.ext.android.viewModel class MainActivity : ComponentActivity() { private val viewModel by viewModel() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) WindowCompat.setDecorFitsSystemWindows(window, false) installSplashScreen().apply { setKeepOnScreenCondition { viewModel.splashCondition.value } } // The splash screen is shown until the start destination is determined. // If there's a delay, the splash screen will cover it. setContent { LivingAITheme { enableEdgeToEdge( statusBarStyle = SystemBarStyle.auto( lightScrim = Color.Transparent.toArgb(), darkScrim = Color.Transparent.toArgb() ), navigationBarStyle = SystemBarStyle.auto( lightScrim = Color.Transparent.toArgb(), darkScrim = Color.Transparent.toArgb() ) ) Box(modifier = Modifier.background(color = MaterialTheme.colorScheme.background)) { val startDestination = viewModel.startDestination.value // Ensure startDestination is not null before rendering NavGraph if (startDestination != null) { NavGraph(startDestination = startDestination) } else { // Optional: Show a loading indicator if startDestination is null // for an extended period, though splash screen should handle it. } } } } } }