diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2021-01-14 21:31:35 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2021-03-31 14:36:30 +0000 |
| commit | e33ac60aad018ddae0b79d81b085712438acafca (patch) | |
| tree | 8afba82f1ede197a460ba7c0d6f5c3df814b2982 /android | |
| parent | b4749b47c579f6b6fdf5fa961c066f26d16e9111 (diff) | |
| download | mullvadvpn-e33ac60aad018ddae0b79d81b085712438acafca.tar.xz mullvadvpn-e33ac60aad018ddae0b79d81b085712438acafca.zip | |
Properly update the login status in `AccountCache`
Diffstat (limited to 'android')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/AccountCache.kt | 14 |
1 files changed, 14 insertions, 0 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 a243ea790e..c8a8e830e5 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 @@ -2,6 +2,7 @@ package net.mullvad.mullvadvpn.service.endpoint import kotlinx.coroutines.delay import net.mullvad.mullvadvpn.model.GetAccountDataResult +import net.mullvad.mullvadvpn.model.LoginStatus import net.mullvad.mullvadvpn.util.ExponentialBackoff import net.mullvad.mullvadvpn.util.JobTracker import net.mullvad.talpid.util.EventNotifier @@ -26,6 +27,7 @@ class AccountCache(private val endpoint: ServiceEndpoint) { val onAccountNumberChange = EventNotifier<String?>(null) val onAccountExpiryChange = EventNotifier<DateTime?>(null) val onAccountHistoryChange = EventNotifier<List<String>>(listOf<String>()) + val onLoginStatusChange = EventNotifier<LoginStatus?>(null) var newlyCreatedAccount = false private set @@ -39,6 +41,9 @@ class AccountCache(private val endpoint: ServiceEndpoint) { private var createdAccountExpiry: DateTime? = null private var oldAccountExpiry: DateTime? = null + var loginStatus by onLoginStatusChange.notifiable() + private set + init { endpoint.settingsListener.accountNumberNotifier.subscribe(this) { accountNumber -> handleNewAccountNumber(accountNumber) @@ -111,6 +116,7 @@ class AccountCache(private val endpoint: ServiceEndpoint) { onAccountNumberChange.unsubscribeAll() onAccountExpiryChange.unsubscribeAll() onAccountHistoryChange.unsubscribeAll() + onLoginStatusChange.unsubscribeAll() } private fun fetchAccountHistory() { @@ -131,6 +137,10 @@ class AccountCache(private val endpoint: ServiceEndpoint) { accountExpiry = null accountNumber = newAccountNumber + loginStatus = newAccountNumber?.let { account -> + LoginStatus(account, null, newlyCreatedAccount) + } + fetchAccountExpiry() fetchAccountHistory() } @@ -152,6 +162,10 @@ class AccountCache(private val endpoint: ServiceEndpoint) { accountExpiry = newAccountExpiry oldAccountExpiry = null + loginStatus = loginStatus?.let { currentStatus -> + LoginStatus(currentStatus.account, newAccountExpiry, currentStatus.isNewAccount) + } + if (accountExpiry != null && newlyCreatedAccount) { if (createdAccountExpiry == null) { createdAccountExpiry = accountExpiry |
