summaryrefslogtreecommitdiffhomepage
path: root/android/service/src
diff options
context:
space:
mode:
authorDavid Göransson <david.goransson90@gmail.com>2023-10-23 15:12:28 +0200
committerAlbin <albin@mullvad.net>2023-11-15 14:42:37 +0100
commit64f39005a49c1898cbad9e66e4bc197ff9727687 (patch)
tree8d89e5d760a6130c27ce7fe5a1d2be6eddeb182e /android/service/src
parentf630f1aff25ddde3f5da27ba88d33afe263b5c22 (diff)
downloadmullvadvpn-64f39005a49c1898cbad9e66e4bc197ff9727687.tar.xz
mullvadvpn-64f39005a49c1898cbad9e66e4bc197ff9727687.zip
Add quick fix to be able to refresh AccountCache from VoucherRedeemer
Diffstat (limited to 'android/service/src')
-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) {