wrap signupscreen in route
This commit is contained in:
		
							parent
							
								
									3fd191cccc
								
							
						
					
					
						commit
						95140e1739
					
				
					 3 changed files with 71 additions and 28 deletions
				
			
		|  | @ -27,13 +27,10 @@ import be.ugent.sel.studeez.common.snackbar.SnackbarManager | ||||||
| import be.ugent.sel.studeez.navigation.StudeezDestinations | import be.ugent.sel.studeez.navigation.StudeezDestinations | ||||||
| import be.ugent.sel.studeez.screens.home.HomeRoute | import be.ugent.sel.studeez.screens.home.HomeRoute | ||||||
| import be.ugent.sel.studeez.screens.log_in.LoginRoute | import be.ugent.sel.studeez.screens.log_in.LoginRoute | ||||||
| import be.ugent.sel.studeez.screens.log_in.LoginScreen |  | ||||||
| import be.ugent.sel.studeez.screens.profile.EditProfileRoute | import be.ugent.sel.studeez.screens.profile.EditProfileRoute | ||||||
| import be.ugent.sel.studeez.screens.profile.EditProfileScreen |  | ||||||
| import be.ugent.sel.studeez.screens.profile.ProfileRoute | import be.ugent.sel.studeez.screens.profile.ProfileRoute | ||||||
| import be.ugent.sel.studeez.screens.profile.ProfileScreen |  | ||||||
| import be.ugent.sel.studeez.screens.session.SessionScreen | import be.ugent.sel.studeez.screens.session.SessionScreen | ||||||
| import be.ugent.sel.studeez.screens.sign_up.SignUpScreen | import be.ugent.sel.studeez.screens.sign_up.SignUpRoute | ||||||
| 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 | ||||||
|  | @ -112,7 +109,7 @@ fun NavGraphBuilder.studeezGraph(appState: StudeezAppstate) { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     composable(StudeezDestinations.SIGN_UP_SCREEN) { |     composable(StudeezDestinations.SIGN_UP_SCREEN) { | ||||||
|         SignUpScreen(openAndPopUp) |         SignUpRoute(openAndPopUp, viewModel = hiltViewModel()) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     composable(StudeezDestinations.HOME_SCREEN) { |     composable(StudeezDestinations.HOME_SCREEN) { | ||||||
|  |  | ||||||
|  | @ -10,23 +10,64 @@ import androidx.compose.runtime.Composable | ||||||
| import androidx.compose.runtime.getValue | import androidx.compose.runtime.getValue | ||||||
| import androidx.compose.ui.Alignment | import androidx.compose.ui.Alignment | ||||||
| import androidx.compose.ui.Modifier | import androidx.compose.ui.Modifier | ||||||
| import androidx.hilt.navigation.compose.hiltViewModel | import androidx.compose.ui.tooling.preview.Preview | ||||||
| import be.ugent.sel.studeez.common.composable.* | import be.ugent.sel.studeez.common.composable.BasicButton | ||||||
|  | import be.ugent.sel.studeez.common.composable.BasicTextButton | ||||||
|  | import be.ugent.sel.studeez.common.composable.EmailField | ||||||
|  | import be.ugent.sel.studeez.common.composable.PasswordField | ||||||
|  | import be.ugent.sel.studeez.common.composable.RepeatPasswordField | ||||||
|  | import be.ugent.sel.studeez.common.composable.SimpleScreenTemplate | ||||||
|  | import be.ugent.sel.studeez.common.composable.UsernameField | ||||||
| import be.ugent.sel.studeez.common.ext.basicButton | import be.ugent.sel.studeez.common.ext.basicButton | ||||||
| import be.ugent.sel.studeez.common.ext.fieldModifier | import be.ugent.sel.studeez.common.ext.fieldModifier | ||||||
| import be.ugent.sel.studeez.common.ext.textButton | import be.ugent.sel.studeez.common.ext.textButton | ||||||
| import be.ugent.sel.studeez.resources | import be.ugent.sel.studeez.resources | ||||||
| import be.ugent.sel.studeez.R.string as AppText | import be.ugent.sel.studeez.R.string as AppText | ||||||
| 
 | 
 | ||||||
|  | data class SignUpActions( | ||||||
|  |     val onUserNameChange: (String) -> Unit, | ||||||
|  |     val onEmailChange: (String) -> Unit, | ||||||
|  |     val onPasswordChange: (String) -> Unit, | ||||||
|  |     val onRepeatPasswordChange: (String) -> Unit, | ||||||
|  |     val onSignUpClick: () -> Unit, | ||||||
|  |     val onLoginClick: () -> Unit, | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | fun getSignUpActions( | ||||||
|  |     viewModel: SignUpViewModel, | ||||||
|  |     openAndPopUp: (String, String) -> Unit, | ||||||
|  | ): SignUpActions { | ||||||
|  |     return SignUpActions( | ||||||
|  |         onUserNameChange = { viewModel.onUsernameChange(it) }, | ||||||
|  |         onEmailChange = { viewModel.onEmailChange(it) }, | ||||||
|  |         onPasswordChange = { viewModel.onPasswordChange(it) }, | ||||||
|  |         onRepeatPasswordChange = { viewModel.onRepeatPasswordChange(it) }, | ||||||
|  |         onSignUpClick = { viewModel.onSignUpClick(openAndPopUp) }, | ||||||
|  |         onLoginClick = { viewModel.onLoginClick(openAndPopUp) }, | ||||||
|  |     ) | ||||||
|  | } | ||||||
|  | 
 | ||||||
| @Composable | @Composable | ||||||
| fun SignUpScreen( | fun SignUpRoute( | ||||||
|     openAndPopUp: (String, String) -> Unit, |     openAndPopUp: (String, String) -> Unit, | ||||||
|     modifier: Modifier = Modifier, |     modifier: Modifier = Modifier, | ||||||
|     viewModel: SignUpViewModel = hiltViewModel() |     viewModel: SignUpViewModel, | ||||||
| ) { | ) { | ||||||
|     val uiState by viewModel.uiState |     val uiState by viewModel.uiState | ||||||
|     val fieldModifier = Modifier.fieldModifier() |     SignUpScreen( | ||||||
|  |         modifier = modifier, | ||||||
|  |         uiState, | ||||||
|  |         getSignUpActions(viewModel, openAndPopUp) | ||||||
|  |     ) | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
|  | @Composable | ||||||
|  | fun SignUpScreen( | ||||||
|  |     modifier: Modifier = Modifier, | ||||||
|  |     uiState: SignUpUiState, | ||||||
|  |     signUpActions: SignUpActions, | ||||||
|  | ) { | ||||||
|  |     val fieldModifier = Modifier.fieldModifier() | ||||||
|     SimpleScreenTemplate(title = resources().getString(AppText.create_account)) { |     SimpleScreenTemplate(title = resources().getString(AppText.create_account)) { | ||||||
|         Column( |         Column( | ||||||
|             modifier = modifier |             modifier = modifier | ||||||
|  | @ -36,40 +77,45 @@ fun SignUpScreen( | ||||||
|             verticalArrangement = Arrangement.Center, |             verticalArrangement = Arrangement.Center, | ||||||
|             horizontalAlignment = Alignment.CenterHorizontally |             horizontalAlignment = Alignment.CenterHorizontally | ||||||
|         ) { |         ) { | ||||||
| 
 |  | ||||||
|             UsernameField( |             UsernameField( | ||||||
|                 uiState.username, |                 uiState.username, | ||||||
|                 viewModel::onUsernameChange, |                 signUpActions.onUserNameChange, | ||||||
|                 fieldModifier |                 fieldModifier | ||||||
|             ) |             ) | ||||||
| 
 |  | ||||||
|             EmailField( |             EmailField( | ||||||
|                 uiState.email, |                 uiState.email, | ||||||
|                 viewModel::onEmailChange, |                 signUpActions.onEmailChange, | ||||||
|                 fieldModifier |                 fieldModifier | ||||||
|             ) |             ) | ||||||
| 
 |  | ||||||
|             PasswordField( |             PasswordField( | ||||||
|                 uiState.password, |                 uiState.password, | ||||||
|                 viewModel::onPasswordChange, |                 signUpActions.onPasswordChange, | ||||||
|                 fieldModifier |                 fieldModifier | ||||||
|             ) |             ) | ||||||
| 
 |  | ||||||
|             RepeatPasswordField( |             RepeatPasswordField( | ||||||
|                 uiState.repeatPassword, |                 uiState.repeatPassword, | ||||||
|                 viewModel::onRepeatPasswordChange, |                 signUpActions.onRepeatPasswordChange, | ||||||
|                 fieldModifier |                 fieldModifier | ||||||
|             ) |             ) | ||||||
| 
 |             BasicButton( | ||||||
|             BasicButton(AppText.create_account, Modifier.basicButton()) { |                 AppText.create_account, | ||||||
|                 viewModel.onSignUpClick(openAndPopUp) |                 Modifier.basicButton(), | ||||||
|             } |                 onClick = signUpActions.onSignUpClick | ||||||
| 
 |             ) | ||||||
|             BasicTextButton(AppText.already_user, Modifier.textButton()) { |             BasicTextButton( | ||||||
|                 viewModel.onLoginScreenClick(openAndPopUp) |                 AppText.already_user, | ||||||
|  |                 Modifier.textButton(), | ||||||
|  |                 action = signUpActions.onLoginClick | ||||||
|  |             ) | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     } | } | ||||||
| 
 | 
 | ||||||
| 
 | @Preview | ||||||
|  | @Composable | ||||||
|  | fun SignUpPreview() { | ||||||
|  |     SignUpScreen( | ||||||
|  |         uiState = SignUpUiState(), | ||||||
|  |         signUpActions = SignUpActions({}, {}, {}, {}, {}, {}) | ||||||
|  |     ) | ||||||
| } | } | ||||||
|  | @ -71,7 +71,7 @@ class SignUpViewModel @Inject constructor( | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     fun onLoginScreenClick(openAndPopUp: (String, String) -> Unit) { |     fun onLoginClick(openAndPopUp: (String, String) -> Unit) { | ||||||
|         openAndPopUp(LOGIN_SCREEN, SIGN_UP_SCREEN) |         openAndPopUp(LOGIN_SCREEN, SIGN_UP_SCREEN) | ||||||
|     } |     } | ||||||
| } | } | ||||||
		Reference in a new issue
	
	 brreynie
						brreynie