summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-01-15 12:49:03 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-03-31 14:36:30 +0000
commit6805ea472980c6e2a6abe9d9b33eec9683ddfc46 (patch)
treeb12ea64a693d07da77e1f706315dd4ead6cd37a9
parent4532e9a9fa613af18f4b0fa33327ba21403ecbb4 (diff)
downloadmullvadvpn-6805ea472980c6e2a6abe9d9b33eec9683ddfc46.tar.xz
mullvadvpn-6805ea472980c6e2a6abe9d9b33eec9683ddfc46.zip
Add `logout` method to `AccountCache`
-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 ->