summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorsaber safavi <saber.safavi@codic.se>2023-11-07 14:00:46 +0100
committerAlbin <albin@mullvad.net>2023-11-15 16:04:06 +0100
commit365b1b92309754cfc521c2d8d6dec262bbf11fc5 (patch)
tree94078ca0d66714f0a74218bacd32a5e64cc6ee1a /android
parent2baf3f017ca48bc079720e2c942e2f04289fcf08 (diff)
downloadmullvadvpn-365b1b92309754cfc521c2d8d6dec262bbf11fc5.tar.xz
mullvadvpn-365b1b92309754cfc521c2d8d6dec262bbf11fc5.zip
Skip sending account expiry missing events when failing to fetch
Diffstat (limited to 'android')
-rw-r--r--android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/AccountCache.kt20
1 files changed, 11 insertions, 9 deletions
diff --git a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/AccountCache.kt b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/AccountCache.kt
index ba470a6b24..64459dbfb9 100644
--- a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/AccountCache.kt
+++ b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/AccountCache.kt
@@ -72,8 +72,9 @@ class AccountCache(private val endpoint: ServiceEndpoint) {
registerHandler(Request.FetchAccountExpiry::class) { _ ->
jobTracker.newBackgroundJob("fetchAccountExpiry") {
- accountExpiry =
- cachedAccountToken?.let { fetchAccountExpiry(it) } ?: AccountExpiry.Missing
+ val token = cachedAccountToken ?: return@newBackgroundJob
+ val newAccountExpiry = fetchAccountExpiry(token) ?: return@newBackgroundJob
+ accountExpiry = newAccountExpiry
}
}
@@ -141,6 +142,7 @@ class AccountCache(private val endpoint: ServiceEndpoint) {
private suspend fun doLogout() {
daemon.await().logoutAccount()
+ accountExpiry = AccountExpiry.Missing
accountHistory = fetchAccountHistory()
}
@@ -154,15 +156,15 @@ class AccountCache(private val endpoint: ServiceEndpoint) {
}
}
- private suspend fun fetchAccountExpiry(accountToken: String): AccountExpiry {
+ private suspend fun fetchAccountExpiry(accountToken: String): AccountExpiry? {
return fetchAccountData(accountToken).let { result ->
- if (result is GetAccountDataResult.Ok) {
- result.accountData.expiry.parseAsDateTime()?.let { parsedDateTime ->
- AccountExpiry.Available(parsedDateTime)
+ when (result) {
+ is GetAccountDataResult.Ok -> {
+ result.accountData.expiry.parseAsDateTime()?.let { AccountExpiry.Available(it) }
}
- ?: AccountExpiry.Missing
- } else {
- AccountExpiry.Missing
+ GetAccountDataResult.InvalidAccount -> AccountExpiry.Missing
+ GetAccountDataResult.OtherError -> null
+ GetAccountDataResult.RpcError -> null
}
}
}