diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-05-06 01:15:31 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-05-11 13:15:50 +0000 |
| commit | cd8f2af7d92d327240b53e6dfe74d670e965e370 (patch) | |
| tree | 40c96fba63a97efdf94d9c32d3b61eed8f0548c2 /android | |
| parent | d5cb2bc38c2beda39b74763cd71e233746d3d410 (diff) | |
| download | mullvadvpn-cd8f2af7d92d327240b53e6dfe74d670e965e370.tar.xz mullvadvpn-cd8f2af7d92d327240b53e6dfe74d670e965e370.zip | |
Only enable Redeem button if voucher code is valid
Diffstat (limited to 'android')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/ui/RedeemVoucherDialogFragment.kt | 34 |
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) + } + } + } } |
