package com.pixelized.rplexicon import android.app.Activity import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.SnackbarHost import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.Surface import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.remember import androidx.compose.runtime.staticCompositionLocalOf import androidx.compose.ui.Modifier import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen import androidx.core.view.WindowCompat import com.pixelized.rplexicon.ui.navigation.ScreenNavHost import com.pixelized.rplexicon.ui.theme.LexiconTheme import dagger.hilt.android.AndroidEntryPoint val LocalActivity = staticCompositionLocalOf { error("Activity not available") } val LocalSnack = staticCompositionLocalOf { error("SnackbarHostState not available") } val NO_WINDOW_INSETS = WindowInsets(0, 0, 0, 0) @AndroidEntryPoint class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // Disable system inset consuming. WindowCompat.setDecorFitsSystemWindows(window, false) // splashscreen management installSplashScreen().apply { setKeepOnScreenCondition { false } } setContent { LexiconTheme { CompositionLocalProvider( LocalActivity provides this, LocalSnack provides remember { SnackbarHostState() } ) { Scaffold( contentWindowInsets = NO_WINDOW_INSETS, content = { padding -> Surface( modifier = Modifier .fillMaxSize() .padding(paddingValues = padding), color = MaterialTheme.colorScheme.background ) { ScreenNavHost() } }, snackbarHost = { SnackbarHost( modifier = Modifier.navigationBarsPadding(), hostState = LocalSnack.current, ) } ) } } } } }