wrap splash in route
This commit is contained in:
		
							parent
							
								
									95140e1739
								
							
						
					
					
						commit
						c401a29061
					
				
					 2 changed files with 45 additions and 11 deletions
				
			
		|  | @ -31,6 +31,7 @@ import be.ugent.sel.studeez.screens.profile.EditProfileRoute | ||||||
| import be.ugent.sel.studeez.screens.profile.ProfileRoute | import be.ugent.sel.studeez.screens.profile.ProfileRoute | ||||||
| import be.ugent.sel.studeez.screens.session.SessionScreen | import be.ugent.sel.studeez.screens.session.SessionScreen | ||||||
| import be.ugent.sel.studeez.screens.sign_up.SignUpRoute | import be.ugent.sel.studeez.screens.sign_up.SignUpRoute | ||||||
|  | import be.ugent.sel.studeez.screens.splash.SplashRoute | ||||||
| import be.ugent.sel.studeez.screens.splash.SplashScreen | import be.ugent.sel.studeez.screens.splash.SplashScreen | ||||||
| import be.ugent.sel.studeez.screens.timer_overview.TimerOverviewScreen | import be.ugent.sel.studeez.screens.timer_overview.TimerOverviewScreen | ||||||
| import be.ugent.sel.studeez.screens.timer_selection.TimerSelectionScreen | import be.ugent.sel.studeez.screens.timer_selection.TimerSelectionScreen | ||||||
|  | @ -101,7 +102,7 @@ fun NavGraphBuilder.studeezGraph(appState: StudeezAppstate) { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     composable(StudeezDestinations.SPLASH_SCREEN) { |     composable(StudeezDestinations.SPLASH_SCREEN) { | ||||||
|         SplashScreen(openAndPopUp) |         SplashRoute(openAndPopUp, viewModel = hiltViewModel()) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     composable(StudeezDestinations.LOGIN_SCREEN) { |     composable(StudeezDestinations.LOGIN_SCREEN) { | ||||||
|  |  | ||||||
|  | @ -1,5 +1,6 @@ | ||||||
| package be.ugent.sel.studeez.screens.splash | package be.ugent.sel.studeez.screens.splash | ||||||
| 
 | 
 | ||||||
|  | import android.window.SplashScreen | ||||||
| import androidx.compose.foundation.background | import androidx.compose.foundation.background | ||||||
| import androidx.compose.foundation.layout.Arrangement | import androidx.compose.foundation.layout.Arrangement | ||||||
| import androidx.compose.foundation.layout.Column | import androidx.compose.foundation.layout.Column | ||||||
|  | @ -15,7 +16,7 @@ import androidx.compose.runtime.LaunchedEffect | ||||||
| import androidx.compose.ui.Alignment | import androidx.compose.ui.Alignment | ||||||
| import androidx.compose.ui.Modifier | import androidx.compose.ui.Modifier | ||||||
| import androidx.compose.ui.res.stringResource | import androidx.compose.ui.res.stringResource | ||||||
| import androidx.hilt.navigation.compose.hiltViewModel | import androidx.compose.ui.tooling.preview.Preview | ||||||
| import be.ugent.sel.studeez.common.composable.BasicButton | import be.ugent.sel.studeez.common.composable.BasicButton | ||||||
| import be.ugent.sel.studeez.common.ext.basicButton | import be.ugent.sel.studeez.common.ext.basicButton | ||||||
| import kotlinx.coroutines.delay | import kotlinx.coroutines.delay | ||||||
|  | @ -24,14 +25,26 @@ import be.ugent.sel.studeez.R.string as AppText | ||||||
| private const val SPLASH_TIMEOUT = 500L | private const val SPLASH_TIMEOUT = 500L | ||||||
| 
 | 
 | ||||||
| @Composable | @Composable | ||||||
| fun SplashScreen( | fun SplashRoute( | ||||||
|     openAndPopUp: (String, String) -> Unit, |     openAndPopUp: (String, String) -> Unit, | ||||||
|     modifier: Modifier = Modifier, |     modifier: Modifier = Modifier, | ||||||
|     viewModel: SplashViewModel = hiltViewModel() |     viewModel: SplashViewModel, | ||||||
|  | ) { | ||||||
|  |     SplashScreen( | ||||||
|  |         modifier = modifier, | ||||||
|  |         onAppStart = { viewModel.onAppStart(openAndPopUp) }, | ||||||
|  |         showError = viewModel.showError.value | ||||||
|  |     ) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | @Composable | ||||||
|  | fun SplashScreen( | ||||||
|  |     modifier: Modifier = Modifier, | ||||||
|  |     onAppStart: () -> Unit, | ||||||
|  |     showError: Boolean, | ||||||
| ) { | ) { | ||||||
|     Column( |     Column( | ||||||
|         modifier = |         modifier = modifier | ||||||
|         modifier |  | ||||||
|             .fillMaxWidth() |             .fillMaxWidth() | ||||||
|             .fillMaxHeight() |             .fillMaxHeight() | ||||||
|             .background(color = MaterialTheme.colors.background) |             .background(color = MaterialTheme.colors.background) | ||||||
|  | @ -39,17 +52,37 @@ fun SplashScreen( | ||||||
|         verticalArrangement = Arrangement.Center, |         verticalArrangement = Arrangement.Center, | ||||||
|         horizontalAlignment = Alignment.CenterHorizontally |         horizontalAlignment = Alignment.CenterHorizontally | ||||||
|     ) { |     ) { | ||||||
|         if (viewModel.showError.value) { |         if (showError) { | ||||||
|             Text(text = stringResource(AppText.generic_error)) |             Text(text = stringResource(AppText.generic_error)) | ||||||
| 
 |             BasicButton( | ||||||
|             BasicButton(AppText.try_again, Modifier.basicButton()) { viewModel.onAppStart(openAndPopUp) } |                 AppText.try_again, | ||||||
|  |                 Modifier.basicButton(), | ||||||
|  |                 onClick = onAppStart, | ||||||
|  |             ) | ||||||
|         } else { |         } else { | ||||||
|             CircularProgressIndicator(color = MaterialTheme.colors.onBackground) |             CircularProgressIndicator(color = MaterialTheme.colors.onBackground) | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 |  | ||||||
|     LaunchedEffect(true) { |     LaunchedEffect(true) { | ||||||
|         delay(SPLASH_TIMEOUT) |         delay(SPLASH_TIMEOUT) | ||||||
|         viewModel.onAppStart(openAndPopUp) |         onAppStart() | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | @Preview | ||||||
|  | @Composable | ||||||
|  | fun SplashPreview() { | ||||||
|  |     SplashScreen( | ||||||
|  |         onAppStart = {}, | ||||||
|  |         showError = false, | ||||||
|  |     ) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | @Preview | ||||||
|  | @Composable | ||||||
|  | fun SplashErrorPreview() { | ||||||
|  |     SplashScreen( | ||||||
|  |         onAppStart = {}, | ||||||
|  |         showError = true, | ||||||
|  |     ) | ||||||
|  | } | ||||||
		Reference in a new issue
	
	 brreynie
						brreynie