summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-05-06 01:15:31 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-05-11 13:15:50 +0000
commitcd8f2af7d92d327240b53e6dfe74d670e965e370 (patch)
tree40c96fba63a97efdf94d9c32d3b61eed8f0548c2
parentd5cb2bc38c2beda39b74763cd71e233746d3d410 (diff)
downloadmullvadvpn-cd8f2af7d92d327240b53e6dfe74d670e965e370.tar.xz
mullvadvpn-cd8f2af7d92d327240b53e6dfe74d670e965e370.zip
Only enable Redeem button if voucher code is valid
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/RedeemVoucherDialogFragment.kt34
1 files changed, 33 insertions, 1 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/RedeemVoucherDialogFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/RedeemVoucherDialogFragment.kt
index 43c83e9f0f..3327c8d800 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/RedeemVoucherDialogFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/RedeemVoucherDialogFragment.kt
@@ -4,6 +4,8 @@ import android.app.Dialog
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.support.v4.app.DialogFragment
+import android.text.Editable
+import android.text.TextWatcher
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
@@ -14,9 +16,12 @@ import net.mullvad.mullvadvpn.ui.widget.Button
import net.mullvad.mullvadvpn.util.JobTracker
import net.mullvad.mullvadvpn.util.SegmentedInputFormatter
+const val FULL_VOUCHER_CODE_LENGTH = "XXXX-XXXX-XXXX-XXXX".length
+
class RedeemVoucherDialogFragment : DialogFragment() {
private val jobTracker = JobTracker()
+ private lateinit var redeemButton: Button
private lateinit var voucherInput: EditText
override fun onCreateView(
@@ -26,7 +31,9 @@ class RedeemVoucherDialogFragment : DialogFragment() {
): View {
val view = inflater.inflate(R.layout.redeem_voucher, container, false)
- voucherInput = view.findViewById(R.id.voucher_code)
+ voucherInput = view.findViewById<EditText>(R.id.voucher_code).apply {
+ addTextChangedListener(ValidVoucherCodeChecker())
+ }
SegmentedInputFormatter(voucherInput, '-').apply {
allCaps = true
@@ -36,6 +43,13 @@ class RedeemVoucherDialogFragment : DialogFragment() {
}
}
+ redeemButton = view.findViewById<Button>(R.id.redeem).apply {
+ setEnabled(false)
+ setOnClickAction("action", jobTracker) {
+ dismiss()
+ }
+ }
+
view.findViewById<Button>(R.id.cancel).setOnClickAction("action", jobTracker) {
activity?.onBackPressed()
}
@@ -62,4 +76,22 @@ class RedeemVoucherDialogFragment : DialogFragment() {
super.onDestroyView()
}
+
+ inner class ValidVoucherCodeChecker : TextWatcher {
+ private var editRecursionCount = 0
+
+ override fun beforeTextChanged(text: CharSequence, start: Int, count: Int, after: Int) {
+ editRecursionCount += 1
+ }
+
+ override fun onTextChanged(text: CharSequence, start: Int, before: Int, count: Int) {}
+
+ override fun afterTextChanged(text: Editable) {
+ editRecursionCount -= 1
+
+ if (editRecursionCount == 0) {
+ redeemButton.setEnabled(text.length == FULL_VOUCHER_CODE_LENGTH)
+ }
+ }
+ }
}