summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-01-14 21:31:35 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-03-31 14:36:30 +0000
commite33ac60aad018ddae0b79d81b085712438acafca (patch)
tree8afba82f1ede197a460ba7c0d6f5c3df814b2982 /android
parentb4749b47c579f6b6fdf5fa961c066f26d16e9111 (diff)
downloadmullvadvpn-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.kt14
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