summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNazario <francisco.nazario@logixsdigital.com>2023-06-07 14:19:29 +0200
committerNazario <francisco.nazario@logixsdigital.com>2023-06-07 14:19:29 +0200
commitf17a201b593dd950e878fd3af03e435ff5cab3ef (patch)
tree45bb1507b0ad814843b02720713edaacee3c0533
parent358521989bfba7c25af30047a2b25b93a100825c (diff)
Updated class 6/06/23
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/data/utils/StringUtils.kt44
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/data/viewmodels/SigninViewModel.kt12
-rw-r--r--app/src/main/java/com/frannazario/proyectoandroid/presentation/fragments/SigninFragment.kt15
-rw-r--r--app/src/main/res/layout/fragment_signin.xml41
-rw-r--r--app/src/main/res/values-es/strings.xml1
-rw-r--r--app/src/main/res/values/strings.xml1
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>