From b936fdd6b936b52bbf5464da9f133600e8c2a8fc Mon Sep 17 00:00:00 2001
From: Taras <tarassmakula@gmail.com>
Date: Mon, 21 Mar 2022 18:07:19 +0200
Subject: [PATCH] Add email validation

---
 .../circles/extensions/StringExtensions.kt    |  6 ++++++
 .../validate_email/ValidateEmailFragment.kt   | 20 +++++++++----------
 2 files changed, 15 insertions(+), 11 deletions(-)
 create mode 100644 app/src/main/java/com/futo/circles/extensions/StringExtensions.kt

diff --git a/app/src/main/java/com/futo/circles/extensions/StringExtensions.kt b/app/src/main/java/com/futo/circles/extensions/StringExtensions.kt
new file mode 100644
index 000000000..9921841e9
--- /dev/null
+++ b/app/src/main/java/com/futo/circles/extensions/StringExtensions.kt
@@ -0,0 +1,6 @@
+package com.futo.circles.extensions
+
+import android.util.Patterns
+
+fun CharSequence?.isValidEmail() =
+    !isNullOrEmpty() && Patterns.EMAIL_ADDRESS.matcher(this).matches()
\ No newline at end of file
diff --git a/app/src/main/java/com/futo/circles/feature/validate_email/ValidateEmailFragment.kt b/app/src/main/java/com/futo/circles/feature/validate_email/ValidateEmailFragment.kt
index 0fc91ea0b..c7bed9ff3 100644
--- a/app/src/main/java/com/futo/circles/feature/validate_email/ValidateEmailFragment.kt
+++ b/app/src/main/java/com/futo/circles/feature/validate_email/ValidateEmailFragment.kt
@@ -8,10 +8,7 @@ import by.kirich1409.viewbindingdelegate.viewBinding
 import com.futo.circles.R
 import com.futo.circles.core.HasLoadingState
 import com.futo.circles.databinding.ValidateEmailFragmentBinding
-import com.futo.circles.extensions.observeResponse
-import com.futo.circles.extensions.showDialog
-import com.futo.circles.extensions.showSuccess
-import com.futo.circles.extensions.visible
+import com.futo.circles.extensions.*
 import org.koin.androidx.viewmodel.ext.android.viewModel
 
 class ValidateEmailFragment : Fragment(R.layout.validate_email_fragment), HasLoadingState {
@@ -29,7 +26,7 @@ class ValidateEmailFragment : Fragment(R.layout.validate_email_fragment), HasLoa
     private fun setupViews() {
         with(binding) {
             tilEmail.editText?.doAfterTextChanged {
-                it?.let { btnSendCode.isEnabled = it.isNotEmpty() }
+                it?.let { btnSendCode.isEnabled = it.isValidEmail() }
             }
             tilValidationCode.editText?.doAfterTextChanged {
                 it?.let { btnValidate.isEnabled = it.isNotEmpty() }
@@ -58,15 +55,16 @@ class ValidateEmailFragment : Fragment(R.layout.validate_email_fragment), HasLoa
     }
 
     private fun setupObservers() {
-        viewModel.sendCodeLiveData.observeResponse(this,
-            success = {
-                showSuccess(getString(R.string.validation_code_sent_to_format, getEmailInput()))
-                binding.tilValidationCode.visible()
-            }
-        )
+        viewModel.sendCodeLiveData.observeResponse(this) { validationCodeSentState() }
         viewModel.validateEmailLiveData.observeResponse(this)
     }
 
     private fun getEmailInput(): String = binding.tilEmail.editText?.text?.toString()?.trim() ?: ""
 
+    private fun validationCodeSentState() {
+        showSuccess(getString(R.string.validation_code_sent_to_format, getEmailInput()))
+        binding.tilValidationCode.visible()
+        binding.btnValidate.isEnabled = false
+    }
+
 }
\ No newline at end of file
-- 
GitLab