diff --git a/app/src/main/java/com/lagradost/cloudstream3/ui/account/AccountDialog.kt b/app/src/main/java/com/lagradost/cloudstream3/ui/account/AccountDialog.kt index 0cbe46bd..76686aef 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/ui/account/AccountDialog.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/ui/account/AccountDialog.kt @@ -1,18 +1,17 @@ package com.lagradost.cloudstream3.ui.account import android.content.Context -import android.text.Editable -import android.text.TextWatcher import android.view.LayoutInflater import android.view.inputmethod.EditorInfo -import android.view.inputmethod.InputMethodManager import android.widget.TextView import androidx.annotation.StringRes import androidx.appcompat.app.AlertDialog import androidx.core.view.isVisible +import androidx.core.widget.doOnTextChanged import com.lagradost.cloudstream3.R import com.lagradost.cloudstream3.databinding.LockPinDialogBinding import com.lagradost.cloudstream3.utils.UIHelper.dismissSafe +import com.lagradost.cloudstream3.utils.UIHelper.showInputMethod object AccountDialog { // TODO add account creation dialog to allow creating accounts directly from AccountSelectActivity @@ -42,6 +41,8 @@ object AccountDialog { val titleRes = if (isEditPin) R.string.enter_current_pin else R.string.enter_pin + var isPinValid = false + val builder = AlertDialog.Builder(context, R.style.AlertDialogCustom) .setView(binding.root) .setTitle(titleRes) @@ -52,7 +53,7 @@ object AccountDialog { callback.invoke(null) } .setOnDismissListener { - if (binding.pinEditTextError.isVisible) { + if (!isPinValid) { callback.invoke(null) } } @@ -60,7 +61,7 @@ object AccountDialog { if (isNewPin) { if (errorText != null) binding.pinEditTextError.visibleWithText(errorText) builder.setPositiveButton(R.string.setup_done) { _, _ -> - if (binding.pinEditTextError.isVisible) { + if (!isPinValid) { // If the done button is pressed and there is an error, // ask again, and mention the error that caused this. showPinInputDialog( @@ -79,40 +80,32 @@ object AccountDialog { val dialog = builder.create() - var isPinValid = false + binding.pinEditText.doOnTextChanged { text, _, _, _ -> + val enteredPin = text.toString() + val isEnteredPinValid = enteredPin.length == 4 - binding.pinEditText.addTextChangedListener(object : TextWatcher { - override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {} - - override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { - val enteredPin = s.toString() - val isEnteredPinValid = enteredPin.length == 4 - - if (isEnteredPinValid) { - if (isPinSet) { - if (enteredPin != currentPin) { - binding.pinEditTextError.visibleWithText(R.string.pin_error_incorrect) - binding.pinEditText.text = null - isPinValid = false - } else { - binding.pinEditTextError.isVisible = false - isPinValid = true - - callback.invoke(enteredPin) - dialog.dismissSafe() - } + if (isEnteredPinValid) { + if (isPinSet) { + if (enteredPin != currentPin) { + binding.pinEditTextError.visibleWithText(R.string.pin_error_incorrect) + binding.pinEditText.text = null + isPinValid = false } else { binding.pinEditTextError.isVisible = false isPinValid = true - } - } else if (isNewPin) { - binding.pinEditTextError.visibleWithText(R.string.pin_error_length) - isPinValid = false - } - } - override fun afterTextChanged(s: Editable?) {} - }) + callback.invoke(enteredPin) + dialog.dismissSafe() + } + } else { + binding.pinEditTextError.isVisible = false + isPinValid = true + } + } else if (isNewPin) { + binding.pinEditTextError.visibleWithText(R.string.pin_error_length) + isPinValid = false + } + } // Detect IME_ACTION_DONE binding.pinEditText.setOnEditorActionListener { _, actionId, _ -> @@ -133,8 +126,7 @@ object AccountDialog { // Auto focus on PIN input and show keyboard binding.pinEditText.requestFocus() binding.pinEditText.postDelayed({ - val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager - imm.showSoftInput(binding.pinEditText, InputMethodManager.SHOW_IMPLICIT) + showInputMethod(binding.pinEditText) }, 200) } } \ No newline at end of file