73 lines
3.0 KiB
Kotlin
73 lines
3.0 KiB
Kotlin
package com.example.livingai
|
|
|
|
import android.os.Bundle
|
|
import androidx.activity.ComponentActivity
|
|
import androidx.activity.SystemBarStyle
|
|
import androidx.activity.compose.LocalActivityResultRegistryOwner
|
|
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.CompositionLocalProvider
|
|
import androidx.compose.runtime.collectAsState
|
|
import androidx.compose.runtime.getValue
|
|
import androidx.compose.ui.Modifier
|
|
import androidx.compose.ui.graphics.Color
|
|
import androidx.compose.ui.graphics.toArgb
|
|
import androidx.compose.ui.platform.LocalContext
|
|
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
|
|
import androidx.core.view.WindowCompat
|
|
import com.example.livingai.domain.usecases.AppDataUseCases
|
|
import com.example.livingai.pages.home.HomeViewModel
|
|
import com.example.livingai.pages.navigation.NavGraph
|
|
import com.example.livingai.ui.theme.LivingAITheme
|
|
import com.example.livingai.utils.LocaleHelper
|
|
import org.koin.android.ext.android.inject
|
|
import org.koin.androidx.viewmodel.ext.android.viewModel
|
|
|
|
class MainActivity : ComponentActivity() {
|
|
private val viewModel by viewModel<HomeViewModel>()
|
|
private val appDataUseCases: AppDataUseCases by inject()
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
super.onCreate(savedInstanceState)
|
|
WindowCompat.setDecorFitsSystemWindows(window, false)
|
|
installSplashScreen().apply {
|
|
setKeepOnScreenCondition {
|
|
viewModel.splashCondition.value
|
|
}
|
|
}
|
|
|
|
setContent {
|
|
val settings by appDataUseCases.getSettings().collectAsState(initial = null)
|
|
val context = LocalContext.current
|
|
|
|
val localizedContext = settings?.let {
|
|
LocaleHelper.applyLocale(context, it.language)
|
|
} ?: context
|
|
|
|
CompositionLocalProvider(
|
|
LocalContext provides localizedContext,
|
|
LocalActivityResultRegistryOwner provides this
|
|
) {
|
|
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
|
|
NavGraph(startDestination = startDestination)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |