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 0000000000000000000000000000000000000000..9921841e9aadeb628f37b6b53ffe2ccd91ac4014
--- /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 0fc91ea0b13db975171de8180405de3f6a942780..c7bed9ff3b6775860d54be7a99218eb9c0954a2b 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