diff options
Diffstat (limited to 'android/src')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/AccountCache.kt | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/AccountCache.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/AccountCache.kt index be9032c55b..820984efe1 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/AccountCache.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/AccountCache.kt @@ -155,10 +155,27 @@ class AccountCache(private val endpoint: ServiceEndpoint) { } private suspend fun doLogin(account: String) { - if (account != accountNumber) { + if (account == accountNumber) { + return + } + + val result = daemon.await().getAccountData(account) + + val expiry = when (result) { + is GetAccountDataResult.Ok -> DateTime.parse(result.accountData.expiry, EXPIRY_FORMAT) + is GetAccountDataResult.RpcError -> null + else -> return + } + + synchronized(this) { markAccountAsNotNew() - daemon.await().setAccount(account) + + accountNumber = account + accountExpiry = expiry + loginStatus = LoginStatus(account, expiry, false) } + + daemon.await().setAccount(account) } private suspend fun doLogout() { |
