This commit is contained in:
Luna712 2023-11-02 15:48:15 -06:00
parent 87e71b215d
commit 3fcd85105e

View file

@ -1,18 +1,17 @@
package com.lagradost.cloudstream3.ui.account package com.lagradost.cloudstream3.ui.account
import android.content.Context import android.content.Context
import android.text.Editable
import android.text.TextWatcher
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.inputmethod.EditorInfo import android.view.inputmethod.EditorInfo
import android.view.inputmethod.InputMethodManager
import android.widget.TextView import android.widget.TextView
import androidx.annotation.StringRes import androidx.annotation.StringRes
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.core.widget.doOnTextChanged
import com.lagradost.cloudstream3.R import com.lagradost.cloudstream3.R
import com.lagradost.cloudstream3.databinding.LockPinDialogBinding import com.lagradost.cloudstream3.databinding.LockPinDialogBinding
import com.lagradost.cloudstream3.utils.UIHelper.dismissSafe import com.lagradost.cloudstream3.utils.UIHelper.dismissSafe
import com.lagradost.cloudstream3.utils.UIHelper.showInputMethod
object AccountDialog { object AccountDialog {
// TODO add account creation dialog to allow creating accounts directly from AccountSelectActivity // 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 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) val builder = AlertDialog.Builder(context, R.style.AlertDialogCustom)
.setView(binding.root) .setView(binding.root)
.setTitle(titleRes) .setTitle(titleRes)
@ -52,7 +53,7 @@ object AccountDialog {
callback.invoke(null) callback.invoke(null)
} }
.setOnDismissListener { .setOnDismissListener {
if (binding.pinEditTextError.isVisible) { if (!isPinValid) {
callback.invoke(null) callback.invoke(null)
} }
} }
@ -60,7 +61,7 @@ object AccountDialog {
if (isNewPin) { if (isNewPin) {
if (errorText != null) binding.pinEditTextError.visibleWithText(errorText) if (errorText != null) binding.pinEditTextError.visibleWithText(errorText)
builder.setPositiveButton(R.string.setup_done) { _, _ -> builder.setPositiveButton(R.string.setup_done) { _, _ ->
if (binding.pinEditTextError.isVisible) { if (!isPinValid) {
// If the done button is pressed and there is an error, // If the done button is pressed and there is an error,
// ask again, and mention the error that caused this. // ask again, and mention the error that caused this.
showPinInputDialog( showPinInputDialog(
@ -79,13 +80,8 @@ object AccountDialog {
val dialog = builder.create() val dialog = builder.create()
var isPinValid = false binding.pinEditText.doOnTextChanged { text, _, _, _ ->
val enteredPin = text.toString()
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 val isEnteredPinValid = enteredPin.length == 4
if (isEnteredPinValid) { if (isEnteredPinValid) {
@ -111,9 +107,6 @@ object AccountDialog {
} }
} }
override fun afterTextChanged(s: Editable?) {}
})
// Detect IME_ACTION_DONE // Detect IME_ACTION_DONE
binding.pinEditText.setOnEditorActionListener { _, actionId, _ -> binding.pinEditText.setOnEditorActionListener { _, actionId, _ ->
if (actionId == EditorInfo.IME_ACTION_DONE && isPinValid) { if (actionId == EditorInfo.IME_ACTION_DONE && isPinValid) {
@ -133,8 +126,7 @@ object AccountDialog {
// Auto focus on PIN input and show keyboard // Auto focus on PIN input and show keyboard
binding.pinEditText.requestFocus() binding.pinEditText.requestFocus()
binding.pinEditText.postDelayed({ binding.pinEditText.postDelayed({
val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager showInputMethod(binding.pinEditText)
imm.showSoftInput(binding.pinEditText, InputMethodManager.SHOW_IMPLICIT)
}, 200) }, 200)
} }
} }