added sign up viewmodel
This commit is contained in:
parent
2f5e7e31aa
commit
d3d5bb7dbe
1 changed files with 67 additions and 0 deletions
|
@ -0,0 +1,67 @@
|
|||
package be.ugent.sel.studeez.screens.sign_up
|
||||
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import be.ugent.sel.studeez.common.ext.isValidEmail
|
||||
import be.ugent.sel.studeez.common.ext.isValidPassword
|
||||
import be.ugent.sel.studeez.common.ext.passwordMatches
|
||||
import be.ugent.sel.studeez.common.snackbar.SnackbarManager
|
||||
import be.ugent.sel.studeez.domain.AccountDAO
|
||||
import be.ugent.sel.studeez.domain.LogService
|
||||
import be.ugent.sel.studeez.navigation.StudeezDestinations.LOGIN_SCREEN
|
||||
import be.ugent.sel.studeez.navigation.StudeezDestinations.SIGN_UP_SCREEN
|
||||
import be.ugent.sel.studeez.screens.StudeezViewModel
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import be.ugent.sel.studeez.R.string as AppText
|
||||
import javax.inject.Inject
|
||||
|
||||
@HiltViewModel
|
||||
class SignUpViewModel @Inject constructor(
|
||||
private val accountService: AccountDAO,
|
||||
logService: LogService
|
||||
) : StudeezViewModel(logService) {
|
||||
var uiState = mutableStateOf(SignUpUiState())
|
||||
private set
|
||||
|
||||
private val email
|
||||
get() = uiState.value.email
|
||||
private val password
|
||||
get() = uiState.value.password
|
||||
|
||||
fun onEmailChange(newValue: String) {
|
||||
uiState.value = uiState.value.copy(email = newValue)
|
||||
}
|
||||
|
||||
fun onPasswordChange(newValue: String) {
|
||||
uiState.value = uiState.value.copy(password = newValue)
|
||||
}
|
||||
|
||||
fun onRepeatPasswordChange(newValue: String) {
|
||||
uiState.value = uiState.value.copy(repeatPassword = newValue)
|
||||
}
|
||||
|
||||
fun onSignUpClick(openAndPopUp: (String, String) -> Unit) {
|
||||
if (!email.isValidEmail()) {
|
||||
SnackbarManager.showMessage(AppText.email_error)
|
||||
return
|
||||
}
|
||||
|
||||
if (!password.isValidPassword()) {
|
||||
SnackbarManager.showMessage(AppText.password_error)
|
||||
return
|
||||
}
|
||||
|
||||
if (!password.passwordMatches(uiState.value.repeatPassword)) {
|
||||
SnackbarManager.showMessage(AppText.password_match_error)
|
||||
return
|
||||
}
|
||||
|
||||
launchCatching {
|
||||
accountService.signUpWithEmailAndPassword(email, password)
|
||||
openAndPopUp(LOGIN_SCREEN, SIGN_UP_SCREEN)
|
||||
}
|
||||
}
|
||||
|
||||
fun onLoginScreenClick(openAndPopUp: (String, String) -> Unit) {
|
||||
openAndPopUp(LOGIN_SCREEN, SIGN_UP_SCREEN)
|
||||
}
|
||||
}
|
Reference in a new issue