package com.pixelized.biblib.ui import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.viewModels import androidx.compose.animation.Crossfade import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.livedata.observeAsState import androidx.lifecycle.viewmodel.compose.viewModel import com.pixelized.biblib.ui.composable.screen.LoginScreenComposable import com.pixelized.biblib.ui.composable.screen.MainScreenComposable import com.pixelized.biblib.ui.composable.screen.SplashScreenComposable import com.pixelized.biblib.ui.theme.BibLibTheme import com.pixelized.biblib.ui.viewmodel.navigation.INavigationViewModel.Navigable.Screen import com.pixelized.biblib.ui.viewmodel.navigation.NavigationViewModel class MainActivity : ComponentActivity() { private val navigationViewModel: NavigationViewModel by viewModels() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { BibLibTheme { ContentComposable() } } } override fun onBackPressed() { if (navigationViewModel.navigateBack().not()) { super.onBackPressed() } } } @Composable fun ContentComposable() { val navigationViewModel = viewModel() val main by navigationViewModel.screen.observeAsState() Crossfade(targetState = main) { when (it) { is Screen.SplashScreen -> SplashScreenComposable() is Screen.LoginScreen -> LoginScreenComposable() is Screen.MainScreen -> MainScreenComposable() } } }