diff options
| author | Nazario <francisco.nazario@logixsdigital.com> | 2023-06-07 14:19:29 +0200 |
|---|---|---|
| committer | Nazario <francisco.nazario@logixsdigital.com> | 2023-06-07 14:19:29 +0200 |
| commit | f17a201b593dd950e878fd3af03e435ff5cab3ef (patch) | |
| tree | 45bb1507b0ad814843b02720713edaacee3c0533 | |
| parent | 358521989bfba7c25af30047a2b25b93a100825c (diff) | |
Updated class 6/06/23
6 files changed, 103 insertions, 11 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 new file mode 100644 index 0000000..a8f90f6 --- /dev/null +++ b/app/src/main/java/com/frannazario/proyectoandroid/data/utils/StringUtils.kt @@ -0,0 +1,44 @@ +package com.frannazario.proyectoandroid.data.utils + +fun String?.isEmail(): Boolean { + 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(email_regex.toRegex()) ?: false +} + +fun String?.isValidPassword(): Boolean { + 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 e7f70ed..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,6 +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.checkEmail +import com.frannazario.proyectoandroid.data.utils.checkPassword class SigninViewModel(private val repository: SigninRepository = SigninRepository()): ViewModel() { @@ -14,8 +16,12 @@ class SigninViewModel(private val repository: SigninRepository = SigninRepositor return signinResponseLiveData } - fun register(email: String, password: String) { - val response = repository.register(email, password) - signinResponseLiveData.postValue(response.value) + fun register(email: String?, password: String?) { + if(checkEmail(email) == null && checkPassword(password) == null) { + val response = repository.register( + email ?: "", + password ?: "") + signinResponseLiveData.postValue(response.value) + } } }
\ No newline at end of file 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 2b4f40e..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 @@ -4,6 +4,7 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.Toast import androidx.fragment.app.Fragment import com.frannazario.proyectoandroid.data.responses.SigninResponse import com.frannazario.proyectoandroid.data.viewmodels.SigninViewModel @@ -30,9 +31,19 @@ class SigninFragment: Fragment() { super.onViewCreated(view, savedInstanceState) viewModel.getSigninResultLiveData().observe(viewLifecycleOwner) { response -> when (response) { - is SigninResponse.Success -> {} - is SigninResponse.Error -> {} + is SigninResponse.Success -> { + Toast.makeText(requireContext(), "Funciona perfect", Toast.LENGTH_LONG).show() + } + is SigninResponse.Error -> { + Toast.makeText(requireContext(), response.error, Toast.LENGTH_LONG).show() + } } } + binding.signinBtn.setOnClickListener { + viewModel.register( + email = binding.emailIet.text?.toString(), + password = binding.passwordIet.text?.toString() + ) + } } }
\ No newline at end of file diff --git a/app/src/main/res/layout/fragment_signin.xml b/app/src/main/res/layout/fragment_signin.xml index 863e130..ae1e7a3 100644 --- a/app/src/main/res/layout/fragment_signin.xml +++ b/app/src/main/res/layout/fragment_signin.xml @@ -4,14 +4,43 @@ android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto"> - <TextView + <com.google.android.material.textfield.TextInputLayout + android:id="@+id/email_il" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + <com.google.android.material.textfield.TextInputEditText + android:id="@+id/email_iet" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/field_email" /> + + </com.google.android.material.textfield.TextInputLayout> + + <com.google.android.material.textfield.TextInputLayout + android:id="@+id/password_il" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/email_il"> + + <com.google.android.material.textfield.TextInputEditText + android:id="@+id/password_iet" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/field_password" /> + + </com.google.android.material.textfield.TextInputLayout> + + <Button + android:id="@+id/signin_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="A" - android:textSize="200sp" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toBottomOf="@id/password_il" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintEnd_toEndOf="parent" /> + app:layout_constraintEnd_toEndOf="parent" + 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 1a2566e..3f7cc92 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -2,6 +2,7 @@ <resources> <string name="field_email">Correo electronico</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="signin">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 36859ed..84a3e04 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -3,6 +3,7 @@ <string name="field_email">Email</string> <string name="field_signin">Sign in</string> + <string name="field_password">Password</string> <string name="forgot_password">Forget password</string> <string name="signin">Sign in</string> <string name="login">Login</string> |