diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-10-01 21:18:01 -0300 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-10-01 21:18:01 -0300 |
| commit | 4bba94686852e0973de4a711ed7cb477bfd123b1 (patch) | |
| tree | 1835222385dd9bc98b092769a8c0052c98464d4e /android/src | |
| parent | fb69385fbc9c999c5ac5301830d08f67192cef2e (diff) | |
| parent | efe7471e22a2fe2f7ea3da9bbb2d5bac5218f2c1 (diff) | |
| download | mullvadvpn-4bba94686852e0973de4a711ed7cb477bfd123b1.tar.xz mullvadvpn-4bba94686852e0973de4a711ed7cb477bfd123b1.zip | |
Merge branch 'login-on-api-error'
Diffstat (limited to 'android/src')
4 files changed, 25 insertions, 9 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/LoginFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/LoginFragment.kt index 5561043791..21d1713b6f 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/LoginFragment.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/LoginFragment.kt @@ -17,6 +17,7 @@ import kotlinx.coroutines.Job import kotlinx.coroutines.async import kotlinx.coroutines.delay import kotlinx.coroutines.launch +import net.mullvad.mullvadvpn.model.GetAccountDataResult class LoginFragment : Fragment() { private lateinit var parentActivity: MainActivity @@ -99,13 +100,14 @@ class LoginFragment : Fragment() { loginJob?.cancel() loginJob = GlobalScope.async(Dispatchers.Default) { val daemon = parentActivity.daemon.await() - val accountData = daemon.getAccountData(accountToken) + val accountDataResult = daemon.getAccountData(accountToken) - if (accountData != null) { - daemon.setAccount(accountToken) - true - } else { - false + when (accountDataResult) { + is GetAccountDataResult.Ok, is GetAccountDataResult.RpcError -> { + daemon.setAccount(accountToken) + true + } + else -> false } } diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadDaemon.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadDaemon.kt index a906b9a9c9..fe1ba2bc71 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadDaemon.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadDaemon.kt @@ -1,8 +1,8 @@ package net.mullvad.mullvadvpn -import net.mullvad.mullvadvpn.model.AccountData import net.mullvad.mullvadvpn.model.AppVersionInfo import net.mullvad.mullvadvpn.model.GeoIpLocation +import net.mullvad.mullvadvpn.model.GetAccountDataResult import net.mullvad.mullvadvpn.model.KeygenEvent import net.mullvad.mullvadvpn.model.PublicKey import net.mullvad.mullvadvpn.model.RelayList @@ -28,7 +28,7 @@ class MullvadDaemon(val vpnService: MullvadVpnService) { external fun connect() external fun disconnect() external fun generateWireguardKey(): KeygenEvent? - external fun getAccountData(accountToken: String): AccountData? + external fun getAccountData(accountToken: String): GetAccountDataResult external fun getCurrentLocation(): GeoIpLocation? external fun getCurrentVersion(): String external fun getRelayLocations(): RelayList diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/AccountCache.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/AccountCache.kt index 8494d8ff82..5a08abefc1 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/AccountCache.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/AccountCache.kt @@ -6,6 +6,7 @@ import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.Job import kotlinx.coroutines.launch import net.mullvad.mullvadvpn.MullvadDaemon +import net.mullvad.mullvadvpn.model.GetAccountDataResult import org.joda.time.DateTime import org.joda.time.format.DateTimeFormat @@ -54,7 +55,12 @@ class AccountCache(val settingsListener: SettingsListener, val daemon: Deferred< private fun fetchAccountExpiry() = GlobalScope.launch(Dispatchers.Default) { val accountNumber = this@AccountCache.accountNumber val accountData = accountNumber?.let { account -> - daemon.await().getAccountData(account) + val result = daemon.await().getAccountData(account) + + when (result) { + is GetAccountDataResult.Ok -> result.accountData + else -> null + } } synchronized(this@AccountCache) { diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/model/GetAccountDataResult.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/model/GetAccountDataResult.kt new file mode 100644 index 0000000000..386288676f --- /dev/null +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/model/GetAccountDataResult.kt @@ -0,0 +1,8 @@ +package net.mullvad.mullvadvpn.model + +sealed class GetAccountDataResult { + class Ok(val accountData: AccountData) : GetAccountDataResult() + class InvalidAccount : GetAccountDataResult() + class RpcError : GetAccountDataResult() + class OtherError : GetAccountDataResult() +} |
