Change viewmodel instanciation.
This commit is contained in:
		
							parent
							
								
									b28df77d19
								
							
						
					
					
						commit
						a2447e2376
					
				
					 5 changed files with 28 additions and 26 deletions
				
			
		| 
						 | 
				
			
			@ -9,6 +9,7 @@ import androidx.compose.animation.core.tween
 | 
			
		|||
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
 | 
			
		||||
| 
						 | 
				
			
			@ -20,7 +21,6 @@ import com.pixelized.biblib.utils.BitmapCache
 | 
			
		|||
 | 
			
		||||
class MainActivity : ComponentActivity() {
 | 
			
		||||
    private val navigationViewModel: NavigationViewModel by viewModels()
 | 
			
		||||
    private val authenticationViewModel: AuthenticationViewModel by viewModels()
 | 
			
		||||
 | 
			
		||||
    override fun onCreate(savedInstanceState: Bundle?) {
 | 
			
		||||
        super.onCreate(savedInstanceState)
 | 
			
		||||
| 
						 | 
				
			
			@ -29,7 +29,7 @@ class MainActivity : ComponentActivity() {
 | 
			
		|||
 | 
			
		||||
        setContent {
 | 
			
		||||
            BibLibTheme {
 | 
			
		||||
                ContentComposable(navigationViewModel, authenticationViewModel)
 | 
			
		||||
                ContentComposable()
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -42,20 +42,15 @@ class MainActivity : ComponentActivity() {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
@Composable
 | 
			
		||||
fun ContentComposable(
 | 
			
		||||
    navigationViewModel: NavigationViewModel,
 | 
			
		||||
    authenticationViewModel: AuthenticationViewModel
 | 
			
		||||
) {
 | 
			
		||||
fun ContentComposable() {
 | 
			
		||||
    val navigationViewModel = viewModel<NavigationViewModel>()
 | 
			
		||||
    val main by navigationViewModel.screen.observeAsState()
 | 
			
		||||
 | 
			
		||||
    Crossfade(targetState = main, animationSpec = tween(1000)) {
 | 
			
		||||
    Crossfade(targetState = main) {
 | 
			
		||||
        when (it) {
 | 
			
		||||
            is Screen.SplashScreen -> SplashScreenComposable(navigationViewModel)
 | 
			
		||||
            is Screen.MainScreen -> MainScreenComposable(navigationViewModel)
 | 
			
		||||
            is Screen.LoginScreen -> LoginScreenComposable(
 | 
			
		||||
                navigationViewModel = navigationViewModel,
 | 
			
		||||
                authenticationViewModel = authenticationViewModel
 | 
			
		||||
            )
 | 
			
		||||
            is Screen.SplashScreen -> SplashScreenComposable()
 | 
			
		||||
            is Screen.LoginScreen -> LoginScreenComposable()
 | 
			
		||||
            is Screen.MainScreen -> MainScreenComposable()
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,6 +27,7 @@ import androidx.compose.ui.text.input.PasswordVisualTransformation
 | 
			
		|||
import androidx.compose.ui.text.input.VisualTransformation
 | 
			
		||||
import androidx.compose.ui.tooling.preview.Preview
 | 
			
		||||
import androidx.compose.ui.unit.dp
 | 
			
		||||
import androidx.lifecycle.viewmodel.compose.viewModel
 | 
			
		||||
import com.pixelized.biblib.R
 | 
			
		||||
import com.pixelized.biblib.ui.theme.BibLibTheme
 | 
			
		||||
import com.pixelized.biblib.ui.viewmodel.AuthenticationViewModel
 | 
			
		||||
| 
						 | 
				
			
			@ -36,17 +37,16 @@ import com.pixelized.biblib.ui.viewmodel.NavigationViewModel
 | 
			
		|||
@Composable
 | 
			
		||||
fun LoginScreenComposablePreview() {
 | 
			
		||||
    BibLibTheme {
 | 
			
		||||
        val navigationViewModel = NavigationViewModel()
 | 
			
		||||
        val authenticationViewModel = AuthenticationViewModel()
 | 
			
		||||
        LoginScreenComposable(navigationViewModel, authenticationViewModel)
 | 
			
		||||
        LoginScreenComposable()
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@Composable
 | 
			
		||||
fun LoginScreenComposable(
 | 
			
		||||
    navigationViewModel: NavigationViewModel,
 | 
			
		||||
    authenticationViewModel: AuthenticationViewModel
 | 
			
		||||
 | 
			
		||||
) {
 | 
			
		||||
    val navigationViewModel = viewModel<NavigationViewModel>()
 | 
			
		||||
    val authenticationViewModel = viewModel<AuthenticationViewModel>()
 | 
			
		||||
    val typography = MaterialTheme.typography
 | 
			
		||||
 | 
			
		||||
    Column(
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,7 +2,6 @@ package com.pixelized.biblib.ui.composable.screen
 | 
			
		|||
 | 
			
		||||
import androidx.compose.animation.Crossfade
 | 
			
		||||
import androidx.compose.animation.core.tween
 | 
			
		||||
import androidx.compose.foundation.layout.Box
 | 
			
		||||
import androidx.compose.material.*
 | 
			
		||||
import androidx.compose.material.icons.Icons
 | 
			
		||||
import androidx.compose.material.icons.sharp.ArrowBack
 | 
			
		||||
| 
						 | 
				
			
			@ -13,6 +12,7 @@ import androidx.compose.runtime.getValue
 | 
			
		|||
import androidx.compose.runtime.livedata.observeAsState
 | 
			
		||||
import androidx.compose.ui.res.stringResource
 | 
			
		||||
import androidx.compose.ui.tooling.preview.Preview
 | 
			
		||||
import androidx.lifecycle.viewmodel.compose.viewModel
 | 
			
		||||
import com.pixelized.biblib.R
 | 
			
		||||
import com.pixelized.biblib.ui.composable.pages.DetailPageComposable
 | 
			
		||||
import com.pixelized.biblib.ui.composable.pages.HomePageComposable
 | 
			
		||||
| 
						 | 
				
			
			@ -41,14 +41,14 @@ fun ToolbarComposableLightPreview() {
 | 
			
		|||
@Preview
 | 
			
		||||
@Composable
 | 
			
		||||
fun MainScreenComposablePreview() {
 | 
			
		||||
    val viewModel = NavigationViewModel()
 | 
			
		||||
    BibLibTheme {
 | 
			
		||||
        MainScreenComposable(navigationViewModel = viewModel)
 | 
			
		||||
        MainScreenComposable()
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@Composable
 | 
			
		||||
fun MainScreenComposable(navigationViewModel: NavigationViewModel) {
 | 
			
		||||
fun MainScreenComposable() {
 | 
			
		||||
    val navigationViewModel = viewModel<NavigationViewModel>()
 | 
			
		||||
    val page by navigationViewModel.page.observeAsState()
 | 
			
		||||
 | 
			
		||||
    LaunchedEffect(key1 = "MainScreen", block = {
 | 
			
		||||
| 
						 | 
				
			
			@ -58,7 +58,7 @@ fun MainScreenComposable(navigationViewModel: NavigationViewModel) {
 | 
			
		|||
    Scaffold(
 | 
			
		||||
        topBar = { ToolbarComposable(navigationViewModel) },
 | 
			
		||||
    ) {
 | 
			
		||||
        Crossfade(targetState = page, animationSpec = tween(1000)) {
 | 
			
		||||
        Crossfade(targetState = page) {
 | 
			
		||||
            when (it) {
 | 
			
		||||
                is Page.HomePage -> HomePageComposable(navigationViewModel)
 | 
			
		||||
                is Page.Detail -> DetailPageComposable(it.book)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,6 +11,7 @@ import androidx.compose.runtime.rememberCoroutineScope
 | 
			
		|||
import androidx.compose.ui.Alignment
 | 
			
		||||
import androidx.compose.ui.Modifier
 | 
			
		||||
import androidx.compose.ui.tooling.preview.Preview
 | 
			
		||||
import androidx.lifecycle.viewmodel.compose.viewModel
 | 
			
		||||
import com.pixelized.biblib.ui.theme.BibLibTheme
 | 
			
		||||
import com.pixelized.biblib.ui.viewmodel.NavigationViewModel
 | 
			
		||||
import kotlinx.coroutines.*
 | 
			
		||||
| 
						 | 
				
			
			@ -19,15 +20,16 @@ import kotlinx.coroutines.*
 | 
			
		|||
@Preview
 | 
			
		||||
@Composable
 | 
			
		||||
fun SplashScreenComposablePreview() {
 | 
			
		||||
    val viewModel = NavigationViewModel()
 | 
			
		||||
    BibLibTheme {
 | 
			
		||||
        SplashScreenComposable(viewModel)
 | 
			
		||||
        SplashScreenComposable()
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@Composable
 | 
			
		||||
fun SplashScreenComposable(navigationViewModel: NavigationViewModel) {
 | 
			
		||||
fun SplashScreenComposable() {
 | 
			
		||||
    val navigationViewModel = viewModel<NavigationViewModel>()
 | 
			
		||||
    val typography = MaterialTheme.typography
 | 
			
		||||
 | 
			
		||||
    Box(
 | 
			
		||||
        modifier = Modifier
 | 
			
		||||
            .fillMaxHeight()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue