added splashscreen
This commit is contained in:
		
							parent
							
								
									30cfdd2c96
								
							
						
					
					
						commit
						10202fa693
					
				
					 2 changed files with 81 additions and 0 deletions
				
			
		|  | @ -0,0 +1,55 @@ | ||||||
|  | package be.ugent.sel.studeez.screens.splash | ||||||
|  | 
 | ||||||
|  | import androidx.compose.foundation.background | ||||||
|  | import androidx.compose.foundation.layout.Arrangement | ||||||
|  | import androidx.compose.foundation.layout.Column | ||||||
|  | import androidx.compose.foundation.layout.fillMaxHeight | ||||||
|  | import androidx.compose.foundation.layout.fillMaxWidth | ||||||
|  | import androidx.compose.foundation.rememberScrollState | ||||||
|  | import androidx.compose.foundation.verticalScroll | ||||||
|  | import androidx.compose.material.CircularProgressIndicator | ||||||
|  | import androidx.compose.material.MaterialTheme | ||||||
|  | import androidx.compose.material.Text | ||||||
|  | import androidx.compose.runtime.Composable | ||||||
|  | import androidx.compose.runtime.LaunchedEffect | ||||||
|  | import androidx.compose.ui.Alignment | ||||||
|  | import androidx.compose.ui.Modifier | ||||||
|  | import androidx.compose.ui.res.stringResource | ||||||
|  | import androidx.hilt.navigation.compose.hiltViewModel | ||||||
|  | import be.ugent.sel.studeez.common.composable.BasicButton | ||||||
|  | import be.ugent.sel.studeez.common.ext.basicButton | ||||||
|  | import kotlinx.coroutines.delay | ||||||
|  | import be.ugent.sel.studeez.R.string as AppText | ||||||
|  | 
 | ||||||
|  | private const val SPLASH_TIMEOUT = 1000L | ||||||
|  | 
 | ||||||
|  | @Composable | ||||||
|  | fun SplashScreen( | ||||||
|  |     openAndPopUp: (String, String) -> Unit, | ||||||
|  |     modifier: Modifier = Modifier, | ||||||
|  |     viewModel: SplashViewModel = hiltViewModel() | ||||||
|  | ) { | ||||||
|  |     Column( | ||||||
|  |         modifier = | ||||||
|  |         modifier | ||||||
|  |             .fillMaxWidth() | ||||||
|  |             .fillMaxHeight() | ||||||
|  |             .background(color = MaterialTheme.colors.background) | ||||||
|  |             .verticalScroll(rememberScrollState()), | ||||||
|  |         verticalArrangement = Arrangement.Center, | ||||||
|  |         horizontalAlignment = Alignment.CenterHorizontally | ||||||
|  |     ) { | ||||||
|  |         if (viewModel.showError.value) { | ||||||
|  |             Text(text = stringResource(AppText.generic_error)) | ||||||
|  | 
 | ||||||
|  |             BasicButton(AppText.try_again, Modifier.basicButton()) { viewModel.onAppStart(openAndPopUp) } | ||||||
|  |         } else { | ||||||
|  |             CircularProgressIndicator(color = MaterialTheme.colors.onBackground) | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     LaunchedEffect(true) { | ||||||
|  |         delay(SPLASH_TIMEOUT) | ||||||
|  |         viewModel.onAppStart(openAndPopUp) | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | @ -0,0 +1,26 @@ | ||||||
|  | package be.ugent.sel.studeez.screens.splash | ||||||
|  | 
 | ||||||
|  | import androidx.compose.runtime.mutableStateOf | ||||||
|  | import be.ugent.sel.studeez.domain.AccountDAO | ||||||
|  | import be.ugent.sel.studeez.domain.LogService | ||||||
|  | import be.ugent.sel.studeez.screens.StudeezViewModel | ||||||
|  | import dagger.hilt.android.lifecycle.HiltViewModel | ||||||
|  | import javax.inject.Inject | ||||||
|  | 
 | ||||||
|  | @HiltViewModel | ||||||
|  | class SplashViewModel @Inject constructor( | ||||||
|  |     private val accountDAO: AccountDAO, | ||||||
|  |     logService: LogService | ||||||
|  | ) : StudeezViewModel(logService) { | ||||||
|  |     val showError = mutableStateOf(false) | ||||||
|  | 
 | ||||||
|  |     fun onAppStart(openAndPopUp: (String, String) -> Unit) { | ||||||
|  | 
 | ||||||
|  |         showError.value = false | ||||||
|  |         if (accountDAO.hasUser) { | ||||||
|  |             // openAndPopUp( <homeScreen>, SPLASH_SCREEN) | ||||||
|  |         } else{ | ||||||
|  |             // openAndPopUp(<login>, SPLASH_SCREEN) | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
		Reference in a new issue
	
	 lbarraga
						lbarraga