summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
Diffstat (limited to 'android')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/AccountCache.kt12
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 ->