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