From 87e71b215df60bee391353424c28aa76eaac6d4f Mon Sep 17 00:00:00 2001 From: Luna712 <142361265+Luna712@users.noreply.github.com> Date: Tue, 31 Oct 2023 23:48:33 -0600 Subject: [PATCH] Add done button for when creating new PINs --- .../cloudstream3/ui/account/AccountDialog.kt | 41 +++++++++++++++---- 1 file changed, 33 insertions(+), 8 deletions(-) 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 dfd8831b..0cbe46bd 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 @@ -4,12 +4,12 @@ import android.content.Context import android.text.Editable import android.text.TextWatcher import android.view.LayoutInflater -import android.view.View 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 com.lagradost.cloudstream3.R import com.lagradost.cloudstream3.databinding.LockPinDialogBinding import com.lagradost.cloudstream3.utils.UIHelper.dismissSafe @@ -21,14 +21,18 @@ object AccountDialog { context: Context, currentPin: String?, editAccount: Boolean, + errorText: String? = null, callback: (String?) -> Unit ) { fun TextView.visibleWithText(@StringRes textRes: Int) { - visibility = View.VISIBLE + isVisible = true setText(textRes) } - fun View.isVisible() = visibility == View.VISIBLE + fun TextView.visibleWithText(text: String?) { + isVisible = true + setText(text) + } val binding = LockPinDialogBinding.inflate(LayoutInflater.from(context)) @@ -38,7 +42,7 @@ object AccountDialog { val titleRes = if (isEditPin) R.string.enter_current_pin else R.string.enter_pin - val dialog = AlertDialog.Builder(context, R.style.AlertDialogCustom) + val builder = AlertDialog.Builder(context, R.style.AlertDialogCustom) .setView(binding.root) .setTitle(titleRes) .setNegativeButton(R.string.cancel) { _, _ -> @@ -48,11 +52,32 @@ object AccountDialog { callback.invoke(null) } .setOnDismissListener { - if (binding.pinEditTextError.isVisible()) { + if (binding.pinEditTextError.isVisible) { callback.invoke(null) } } - .create() + + if (isNewPin) { + if (errorText != null) binding.pinEditTextError.visibleWithText(errorText) + builder.setPositiveButton(R.string.setup_done) { _, _ -> + if (binding.pinEditTextError.isVisible) { + // If the done button is pressed and there is an error, + // ask again, and mention the error that caused this. + showPinInputDialog( + context = binding.root.context, + currentPin = null, + editAccount = true, + errorText = binding.pinEditTextError.text.toString(), + callback = callback + ) + } else { + val enteredPin = binding.pinEditText.text.toString() + callback.invoke(enteredPin) + } + } + } + + val dialog = builder.create() var isPinValid = false @@ -70,14 +95,14 @@ object AccountDialog { binding.pinEditText.text = null isPinValid = false } else { - binding.pinEditTextError.visibility = View.GONE + binding.pinEditTextError.isVisible = false isPinValid = true callback.invoke(enteredPin) dialog.dismissSafe() } } else { - binding.pinEditTextError.visibility = View.GONE + binding.pinEditTextError.isVisible = false isPinValid = true } } else if (isNewPin) {