Biblib/app/src/main/java/com/pixelized/biblib/ui/MainActivity.kt
2021-05-14 13:44:11 +02:00

52 lines
1.7 KiB
Kotlin

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<NavigationViewModel>()
val main by navigationViewModel.screen.observeAsState()
Crossfade(targetState = main) {
when (it) {
is Screen.SplashScreen -> SplashScreenComposable()
is Screen.LoginScreen -> LoginScreenComposable()
is Screen.MainScreen -> MainScreenComposable()
}
}
}