summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
Diffstat (limited to 'android')
-rw-r--r--android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/ServiceEndpoint.kt2
-rw-r--r--android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/VoucherRedeemer.kt17
2 files changed, 17 insertions, 2 deletions
diff --git a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/ServiceEndpoint.kt b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/ServiceEndpoint.kt
index fe7ddb75e9..c4a733d919 100644
--- a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/ServiceEndpoint.kt
+++ b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/ServiceEndpoint.kt
@@ -49,7 +49,7 @@ class ServiceEndpoint(
val locationInfoCache = LocationInfoCache(this)
val relayListListener = RelayListListener(this)
val splitTunneling = SplitTunneling(SplitTunnelingPersistence(context), this)
- val voucherRedeemer = VoucherRedeemer(this)
+ val voucherRedeemer = VoucherRedeemer(this, accountCache)
private val deviceRepositoryBackend = DaemonDeviceDataSource(this)
diff --git a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/VoucherRedeemer.kt b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/VoucherRedeemer.kt
index a7003d6888..e7ecf5807d 100644
--- a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/VoucherRedeemer.kt
+++ b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/VoucherRedeemer.kt
@@ -6,10 +6,16 @@ import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.channels.ClosedReceiveChannelException
import kotlinx.coroutines.channels.actor
import kotlinx.coroutines.channels.trySendBlocking
+import net.mullvad.mullvadvpn.lib.common.util.parseAsDateTime
import net.mullvad.mullvadvpn.lib.ipc.Event
import net.mullvad.mullvadvpn.lib.ipc.Request
+import net.mullvad.mullvadvpn.model.AccountExpiry
+import net.mullvad.mullvadvpn.model.VoucherSubmissionResult
-class VoucherRedeemer(private val endpoint: ServiceEndpoint) {
+class VoucherRedeemer(
+ private val endpoint: ServiceEndpoint,
+ private val accountCache: AccountCache
+) {
private val daemon
get() = endpoint.intermittentDaemon
@@ -31,6 +37,15 @@ class VoucherRedeemer(private val endpoint: ServiceEndpoint) {
for (voucher in channel) {
val result = daemon.await().submitVoucher(voucher)
+ // Let AccountCache know about the new expiry
+ if (result is VoucherSubmissionResult.Ok) {
+ val newExpiry = result.submission.newExpiry.parseAsDateTime()
+ if (newExpiry != null) {
+ accountCache.onAccountExpiryChange.notify(
+ AccountExpiry.Available(newExpiry)
+ )
+ }
+ }
endpoint.sendEvent(Event.VoucherSubmissionResult(voucher, result))
}
} catch (exception: ClosedReceiveChannelException) {