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