diff options
Diffstat (limited to 'app/src/main/java/com/frannazario/proyectoandroid')
3 files changed, 41 insertions, 17 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() ) } } |