diff options
Diffstat (limited to 'android')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/AccountCache.kt | 12 |
1 files changed, 12 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 3793774e58..be9032c55b 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 @@ -29,6 +29,7 @@ class AccountCache(private val endpoint: ServiceEndpoint) { private sealed class Command { object CreateAccount : Command() data class Login(val account: String) : Command() + object Logout : Command() } } @@ -71,6 +72,10 @@ class AccountCache(private val endpoint: ServiceEndpoint) { commandChannel.sendBlocking(Command.Login(account)) } + fun logout() { + commandChannel.sendBlocking(Command.Logout) + } + fun fetchAccountExpiry() { synchronized(this) { accountNumber?.let { account -> @@ -135,6 +140,7 @@ class AccountCache(private val endpoint: ServiceEndpoint) { when (command) { is Command.CreateAccount -> doCreateAccount() is Command.Login -> doLogin(command.account) + is Command.Logout -> doLogout() } } catch (exception: ClosedReceiveChannelException) { // Command channel was closed, stop the actor @@ -155,6 +161,12 @@ class AccountCache(private val endpoint: ServiceEndpoint) { } } + private suspend fun doLogout() { + if (accountNumber != null) { + daemon.await().setAccount(null) + } + } + private fun fetchAccountHistory() { jobTracker.newBackgroundJob("fetchHistory") { daemon.await().getAccountHistory()?.let { history -> |
