summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-05-20 19:36:50 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-05-28 18:40:38 +0000
commit593a1e615f036e8a2ded5dae50c543ad50f89e10 (patch)
tree03ca27f228dc46c64dd7a41cedf45cc121987274 /android
parent1023c5ed6c4f760d310208b7fc1d8d5d74a5c292 (diff)
downloadmullvadvpn-593a1e615f036e8a2ded5dae50c543ad50f89e10.tar.xz
mullvadvpn-593a1e615f036e8a2ded5dae50c543ad50f89e10.zip
Invalidate account expiry when voucher is redeemed
Diffstat (limited to 'android')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/RedeemVoucherDialogFragment.kt22
1 files changed, 22 insertions, 0 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 ec0a403f0e..1a300e1fec 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/RedeemVoucherDialogFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/RedeemVoucherDialogFragment.kt
@@ -15,10 +15,12 @@ import android.widget.EditText
import android.widget.TextView
import net.mullvad.mullvadvpn.R
import net.mullvad.mullvadvpn.model.VoucherSubmissionResult
+import net.mullvad.mullvadvpn.service.AccountCache
import net.mullvad.mullvadvpn.service.MullvadDaemon
import net.mullvad.mullvadvpn.ui.widget.Button
import net.mullvad.mullvadvpn.util.JobTracker
import net.mullvad.mullvadvpn.util.SegmentedInputFormatter
+import org.joda.time.DateTime
const val FULL_VOUCHER_CODE_LENGTH = "XXXX-XXXX-XXXX-XXXX".length
@@ -29,6 +31,9 @@ class RedeemVoucherDialogFragment : DialogFragment() {
private lateinit var errorMessage: TextView
private lateinit var voucherInput: EditText
+ private var accountCache: AccountCache? = null
+ private var accountExpiry: DateTime? = null
+ private var accountExpiryListener: Int? = null
private var redeemButton: Button? = null
private var daemon: MullvadDaemon? = null
@@ -50,6 +55,15 @@ class RedeemVoucherDialogFragment : DialogFragment() {
parentActivity.serviceNotifier.subscribe(this) { connection ->
daemon = connection?.daemon
+
+ accountCache?.onAccountExpiryChange?.unsubscribe(this@RedeemVoucherDialogFragment)
+
+ accountCache = connection?.accountCache?.apply {
+ onAccountExpiryChange
+ .subscribe(this@RedeemVoucherDialogFragment) { newAccountExpiry ->
+ accountExpiry = newAccountExpiry
+ }
+ }
}
}
@@ -112,6 +126,10 @@ class RedeemVoucherDialogFragment : DialogFragment() {
override fun onDetach() {
parentActivity.serviceNotifier.unsubscribe(this)
+ accountExpiryListener?.let { id ->
+ accountCache?.onAccountExpiryChange?.unsubscribe(id)
+ }
+
super.onDetach()
}
@@ -140,6 +158,10 @@ class RedeemVoucherDialogFragment : DialogFragment() {
private fun handleAddedTime(timeAdded: Long) {
if (timeAdded > 0) {
+ accountExpiry?.let { oldAccountExpiry ->
+ accountCache?.invalidateAccountExpiry(oldAccountExpiry)
+ }
+
dismiss()
}
}