summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-01-25 21:43:19 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-03-31 14:36:30 +0000
commita073d28823d413651e8b5df52eb654d2a99202be (patch)
tree74894fa97c6b603970517ccda9af0d187446dc35 /android/src
parentddaabc78d194a853ccad3deb26cecc612c4ab857 (diff)
downloadmullvadvpn-a073d28823d413651e8b5df52eb654d2a99202be.tar.xz
mullvadvpn-a073d28823d413651e8b5df52eb654d2a99202be.zip
Implement login logic in the service side
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/AccountCache.kt21
1 files changed, 19 insertions, 2 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 be9032c55b..820984efe1 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
@@ -155,10 +155,27 @@ class AccountCache(private val endpoint: ServiceEndpoint) {
}
private suspend fun doLogin(account: String) {
- if (account != accountNumber) {
+ if (account == accountNumber) {
+ return
+ }
+
+ val result = daemon.await().getAccountData(account)
+
+ val expiry = when (result) {
+ is GetAccountDataResult.Ok -> DateTime.parse(result.accountData.expiry, EXPIRY_FORMAT)
+ is GetAccountDataResult.RpcError -> null
+ else -> return
+ }
+
+ synchronized(this) {
markAccountAsNotNew()
- daemon.await().setAccount(account)
+
+ accountNumber = account
+ accountExpiry = expiry
+ loginStatus = LoginStatus(account, expiry, false)
}
+
+ daemon.await().setAccount(account)
}
private suspend fun doLogout() {