diff options
| author | Alberto Duarte (PWC) <alberto.duarte.delgado@pwc.com> | 2023-06-08 11:49:18 +0100 |
|---|---|---|
| committer | Alberto Duarte (PWC) <alberto.duarte.delgado@pwc.com> | 2023-06-08 11:49:18 +0100 |
| commit | 3e20d3a79d8f5acd90229b398f4d181cc4ef35f5 (patch) | |
| tree | 62367c4633e7f0b699ed69340e66bb7a65d8012e /app/src/main | |
| parent | 90b1191a979af126db12b25072abe6fdbfcd323d (diff) | |
| parent | f17a201b593dd950e878fd3af03e435ff5cab3ef (diff) | |
Merge branch 'fran_nazario' of github.com:Asturfran/Proyecto-android-formacion into alberto_duarte
Conflicts:
app/src/main/java/com/frannazario/proyectoandroid/data/utils/StringUtils.kt
app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/SigninViewModel.kt
app/src/main/java/com/frannazario/proyectoandroid/presentation/fragments/SigninFragment.kt
app/src/main/res/layout/fragment_signin.xml
Diffstat (limited to 'app/src/main')
6 files changed, 46 insertions, 20 deletions
diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/utils/StringUtils.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/utils/StringUtils.kt index 6b22894..a8f90f6 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/data/utils/StringUtils.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/utils/StringUtils.kt @@ -1,20 +1,44 @@ package com.frannazario.proyectoandroid.data.utils -import android.annotation.SuppressLint - fun String?.isEmail(): Boolean { - val emailRegex = "[a-zA-Z0-9\\+\\.\\_\\%\\-\\+]{1,256}" + + val email_regex = "[a-zA-Z0-9\\+\\.\\_\\%\\-\\+]{1,256}" + "\\@" + "[a-zA-Z0-9][a-zA-Z0-9\\-]{0,64}" + "(" + "\\." + "[a-zA-Z0-9][a-zA-Z0-9\\-]{0,25}" + ")+" - return this?.matches(emailRegex.toRegex()) ?: false + return this?.matches(email_regex.toRegex()) ?: false } -@SuppressLint("SuspiciousIndentation") fun String?.isValidPassword(): Boolean { - val passwordRegex = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*?[#?!@\$%^&*-])[a-zA-Z\\d\\w\\W]{8,}\$" - return this?.matches(passwordRegex.toRegex()) ?: false + val password_regex = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*?[#?!@\$%^&*-])[a-zA-Z\\d\\w\\W]{8,}\$" + return this?.matches(password_regex.toRegex()) ?: false +} + +fun checkEmail(email: String?): ErrorTypes? { + return if (email.isNullOrBlank()) { + ErrorTypes.EMAIL_EMPTY + } else if (email.isEmail()) { + null + } else { + ErrorTypes.EMAIL_WRONG_FORMAT + } +} + +fun checkPassword(password: String?): ErrorTypes? { + return if (password.isNullOrBlank()) { + ErrorTypes.PASSWORD_TOO_SHORT + } else if (password.isValidPassword()) { + null + } else { + ErrorTypes.PASSWORD_WRONG_FORMAT + } +} + +enum class ErrorTypes() { + EMAIL_EMPTY, + EMAIL_WRONG_FORMAT, + PASSWORD_TOO_SHORT, + PASSWORD_WRONG_FORMAT }
\ No newline at end of file diff --git a/app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/SigninViewModel.kt b/app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/SigninViewModel.kt index d2631b0..2b4833c 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/SigninViewModel.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/SigninViewModel.kt @@ -5,8 +5,8 @@ import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import com.frannazario.proyectoandroid.data.repositories.SigninRepository import com.frannazario.proyectoandroid.data.responses.SigninResponse -import com.frannazario.proyectoandroid.data.utils.isEmail -import com.frannazario.proyectoandroid.data.utils.isValidPassword +import com.frannazario.proyectoandroid.data.utils.checkEmail +import com.frannazario.proyectoandroid.data.utils.checkPassword class SigninViewModel(private val repository: SigninRepository = SigninRepository()): ViewModel() { @@ -17,9 +17,10 @@ class SigninViewModel(private val repository: SigninRepository = SigninRepositor } fun register(email: String?, password: String?) { - if(email.isEmail() && - password.isValidPassword()) { - val response = repository.register(email ?: "", password ?: "") + if(checkEmail(email) == null && checkPassword(password) == null) { + val response = repository.register( + email ?: "", + password ?: "") signinResponseLiveData.postValue(response.value) } } diff --git a/app/src/main/java/com/frannazario/proyectoandroid/presentation/fragments/SigninFragment.kt b/app/src/main/java/com/frannazario/proyectoandroid/presentation/fragments/SigninFragment.kt index 7e1ab4e..bfb451d 100644 --- a/app/src/main/java/com/frannazario/proyectoandroid/presentation/fragments/SigninFragment.kt +++ b/app/src/main/java/com/frannazario/proyectoandroid/presentation/fragments/SigninFragment.kt @@ -6,7 +6,6 @@ import android.view.View import android.view.ViewGroup import android.widget.Toast import androidx.fragment.app.Fragment -import androidx.lifecycle.Observer import com.frannazario.proyectoandroid.data.responses.SigninResponse import com.frannazario.proyectoandroid.data.viewmodels.SigninViewModel import com.frannazario.proyectoandroid.databinding.FragmentSigninBinding @@ -33,17 +32,17 @@ class SigninFragment: Fragment() { viewModel.getSigninResultLiveData().observe(viewLifecycleOwner) { response -> when (response) { is SigninResponse.Success -> { - Toast.makeText(requireContext(), "Funciona correctamente", Toast.LENGTH_LONG).show() + Toast.makeText(requireContext(), "Funciona perfect", Toast.LENGTH_LONG).show() } is SigninResponse.Error -> { Toast.makeText(requireContext(), response.error, Toast.LENGTH_LONG).show() } } } - binding.signupBtn.setOnClickListener { + binding.signinBtn.setOnClickListener { viewModel.register( - binding.emailIet.text?.toString(), - binding.passwordIet.text?.toString() + email = binding.emailIet.text?.toString(), + password = binding.passwordIet.text?.toString() ) } } diff --git a/app/src/main/res/layout/fragment_signin.xml b/app/src/main/res/layout/fragment_signin.xml index f88a274..ae1e7a3 100644 --- a/app/src/main/res/layout/fragment_signin.xml +++ b/app/src/main/res/layout/fragment_signin.xml @@ -4,7 +4,6 @@ android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto"> - <com.google.android.material.textfield.TextInputLayout android:id="@+id/email_il" android:layout_width="match_parent" @@ -34,13 +33,14 @@ android:hint="@string/field_password" /> </com.google.android.material.textfield.TextInputLayout> + <Button - android:id="@+id/signup_btn" + android:id="@+id/signin_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_constraintTop_toBottomOf="@id/password_il" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" - android:text="@string/signup" /> + android:text="@string/signin" /> </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index ac08189..a4a8581 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -3,6 +3,7 @@ <string name="field_email">Correo electronico</string> <string name="field_password">Contrasena</string> <string name="field_signin">Registro</string> + <string name="field_password">Contraseña</string> <string name="forgot_password">Olvidé la contraseña</string> <string name="signup">Registrarte</string> <string name="login">Acceder</string> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index acba2eb..b04b94d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -4,6 +4,7 @@ <string name="field_email">Email</string> <string name="field_password">Password</string> <string name="field_signin">Sign in</string> + <string name="field_password">Password</string> <string name="forgot_password">Forget password</string> <string name="signup">Sign Up</string> <string name="login">Login</string> |