Skip to content
This repository has been archived by the owner on Aug 4, 2019. It is now read-only.

Commit

Permalink
Email verification: Use pattern matcher for input edit text,closed #49
Browse files Browse the repository at this point in the history
  • Loading branch information
TinaT2 committed Aug 3, 2019
1 parent 681531a commit 7cc527c
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import de.netalic.peacock.data.model.Status
import de.netalic.peacock.ui.base.BaseFragment
import de.netalic.peacock.ui.main.MainHostActivity
import de.netalic.peacock.util.CommonUtils
import de.netalic.peacock.util.ValidatorUtils
import kotlinx.android.synthetic.main.fragment_emailverification.*
import org.koin.android.viewmodel.ext.android.viewModel

Expand All @@ -24,7 +25,6 @@ class EmailVerificationFragment : BaseFragment() {
private val mEmailVerificationViewModel: EmailVerificationViewModel by viewModel()
private val mEmailInputEditText by lazy { editText_emailVerification_emailAddress }
private val mContinueButton by lazy { button_emailValidation_continue }
private val mEmailLength = 5

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
mViewRoot = inflater.inflate(R.layout.fragment_emailverification, container, false)
Expand All @@ -44,11 +44,14 @@ class EmailVerificationFragment : BaseFragment() {
} else
false
}


mEmailInputEditText.addTextChangedListener(emailInputEditTextWatcher())

}

override fun initUiComponents() {
initToolbar()
emailInputEditTextWatcher()
initObserver()
}

Expand Down Expand Up @@ -78,22 +81,21 @@ class EmailVerificationFragment : BaseFragment() {
}


private fun emailInputEditTextWatcher() {
mEmailInputEditText.addTextChangedListener(object : TextWatcher {
private fun emailInputEditTextWatcher():TextWatcher {
return object : TextWatcher {
override fun afterTextChanged(p0: Editable?) {
}

override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
}

override fun onTextChanged(characters: CharSequence?, p1: Int, p2: Int, p3: Int) {
if (characters != null && characters.length > mEmailLength)
if (characters != null && ValidatorUtils.emailValidator(characters.toString()))
enableContinueButton()
else
disableContinueButton()
}

})
}
}

private fun enableContinueButton() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,34 +13,34 @@ import io.reactivex.schedulers.Schedulers

class EmailVerificationViewModel(private val repository: EmailRepository) : BaseViewModel() {

private val mSetEmailResponseLivadata = MutableLiveData<MyResponse<EmailVerificationModel>>()
private val mSetEmailResponseLivaData = MutableLiveData<MyResponse<EmailVerificationModel>>()

fun getSetEmailLiveData(): LiveData<MyResponse<EmailVerificationModel>> {
return mSetEmailResponseLivadata
return mSetEmailResponseLivaData
}

fun setEmail(token: String, email: String) {
if (ValidatorUtils.emailValidator(email)) {
val disposable = repository.setEmail(token, email)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnSubscribe { mSetEmailResponseLivadata.value = MyResponse.loading() }
.doOnSubscribe { mSetEmailResponseLivaData.value = MyResponse.loading() }
.subscribe({
when (it.code()) {
200 -> mSetEmailResponseLivadata.value = MyResponse.success(it.body()!!)
400 -> mSetEmailResponseLivadata.value = MyResponse.failed(EmailMissingException())
401 -> mSetEmailResponseLivadata.value = MyResponse.failed(UnauthorizedException())
712 -> mSetEmailResponseLivadata.value = MyResponse.failed(InvalidEmailException())
717 -> mSetEmailResponseLivadata.value = MyResponse.failed(EmailAlreadyActivatedException())
718 -> mSetEmailResponseLivadata.value = MyResponse.failed(EmailAlreadyExistException())
200 -> mSetEmailResponseLivaData.value = MyResponse.success(it.body()!!)
400 -> mSetEmailResponseLivaData.value = MyResponse.failed(EmailMissingException())
401 -> mSetEmailResponseLivaData.value = MyResponse.failed(UnauthorizedException())
712 -> mSetEmailResponseLivaData.value = MyResponse.failed(InvalidEmailException())
717 -> mSetEmailResponseLivaData.value = MyResponse.failed(EmailAlreadyActivatedException())
718 -> mSetEmailResponseLivaData.value = MyResponse.failed(EmailAlreadyExistException())
}
}, { throwable ->
mSetEmailResponseLivadata.value = MyResponse.failed(throwable)
mSetEmailResponseLivaData.value = MyResponse.failed(throwable)
})

mCompositeDisposable.add(disposable)
} else
//TODO-ehsan are exceptions name of local and remote same?
mSetEmailResponseLivadata.value = MyResponse.failed(InvalidEmailException())
mSetEmailResponseLivaData.value = MyResponse.failed(InvalidEmailException())
}
}

0 comments on commit 7cc527c

Please sign in to comment.