diff options
Diffstat (limited to 'android/src')
| -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 |
