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