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.screens.home.HomeRoute
 | 
			
		||||
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.EditProfileScreen
 | 
			
		||||
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.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.timer_overview.TimerOverviewScreen
 | 
			
		||||
import be.ugent.sel.studeez.screens.timer_selection.TimerSelectionScreen
 | 
			
		||||
| 
						 | 
				
			
			@ -112,7 +109,7 @@ fun NavGraphBuilder.studeezGraph(appState: StudeezAppstate) {
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    composable(StudeezDestinations.SIGN_UP_SCREEN) {
 | 
			
		||||
        SignUpScreen(openAndPopUp)
 | 
			
		||||
        SignUpRoute(openAndPopUp, viewModel = hiltViewModel())
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    composable(StudeezDestinations.HOME_SCREEN) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,23 +10,64 @@ import androidx.compose.runtime.Composable
 | 
			
		|||
import androidx.compose.runtime.getValue
 | 
			
		||||
import androidx.compose.ui.Alignment
 | 
			
		||||
import androidx.compose.ui.Modifier
 | 
			
		||||
import androidx.hilt.navigation.compose.hiltViewModel
 | 
			
		||||
import be.ugent.sel.studeez.common.composable.*
 | 
			
		||||
import androidx.compose.ui.tooling.preview.Preview
 | 
			
		||||
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.fieldModifier
 | 
			
		||||
import be.ugent.sel.studeez.common.ext.textButton
 | 
			
		||||
import be.ugent.sel.studeez.resources
 | 
			
		||||
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
 | 
			
		||||
fun SignUpScreen(
 | 
			
		||||
fun SignUpRoute(
 | 
			
		||||
    openAndPopUp: (String, String) -> Unit,
 | 
			
		||||
    modifier: Modifier = Modifier,
 | 
			
		||||
    viewModel: SignUpViewModel = hiltViewModel()
 | 
			
		||||
    viewModel: SignUpViewModel,
 | 
			
		||||
) {
 | 
			
		||||
    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)) {
 | 
			
		||||
        Column(
 | 
			
		||||
            modifier = modifier
 | 
			
		||||
| 
						 | 
				
			
			@ -36,40 +77,45 @@ fun SignUpScreen(
 | 
			
		|||
            verticalArrangement = Arrangement.Center,
 | 
			
		||||
            horizontalAlignment = Alignment.CenterHorizontally
 | 
			
		||||
        ) {
 | 
			
		||||
 | 
			
		||||
            UsernameField(
 | 
			
		||||
                uiState.username,
 | 
			
		||||
                viewModel::onUsernameChange,
 | 
			
		||||
                signUpActions.onUserNameChange,
 | 
			
		||||
                fieldModifier
 | 
			
		||||
            )
 | 
			
		||||
 | 
			
		||||
            EmailField(
 | 
			
		||||
                uiState.email,
 | 
			
		||||
                viewModel::onEmailChange,
 | 
			
		||||
                signUpActions.onEmailChange,
 | 
			
		||||
                fieldModifier
 | 
			
		||||
            )
 | 
			
		||||
 | 
			
		||||
            PasswordField(
 | 
			
		||||
                uiState.password,
 | 
			
		||||
                viewModel::onPasswordChange,
 | 
			
		||||
                signUpActions.onPasswordChange,
 | 
			
		||||
                fieldModifier
 | 
			
		||||
            )
 | 
			
		||||
 | 
			
		||||
            RepeatPasswordField(
 | 
			
		||||
                uiState.repeatPassword,
 | 
			
		||||
                viewModel::onRepeatPasswordChange,
 | 
			
		||||
                signUpActions.onRepeatPasswordChange,
 | 
			
		||||
                fieldModifier
 | 
			
		||||
            )
 | 
			
		||||
 | 
			
		||||
            BasicButton(AppText.create_account, Modifier.basicButton()) {
 | 
			
		||||
                viewModel.onSignUpClick(openAndPopUp)
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            BasicTextButton(AppText.already_user, Modifier.textButton()) {
 | 
			
		||||
                viewModel.onLoginScreenClick(openAndPopUp)
 | 
			
		||||
            }
 | 
			
		||||
            BasicButton(
 | 
			
		||||
                AppText.create_account,
 | 
			
		||||
                Modifier.basicButton(),
 | 
			
		||||
                onClick = signUpActions.onSignUpClick
 | 
			
		||||
            )
 | 
			
		||||
            BasicTextButton(
 | 
			
		||||
                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)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in a new issue