summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-10-01 21:18:01 -0300
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-10-01 21:18:01 -0300
commit4bba94686852e0973de4a711ed7cb477bfd123b1 (patch)
tree1835222385dd9bc98b092769a8c0052c98464d4e /android/src
parentfb69385fbc9c999c5ac5301830d08f67192cef2e (diff)
parentefe7471e22a2fe2f7ea3da9bbb2d5bac5218f2c1 (diff)
downloadmullvadvpn-4bba94686852e0973de4a711ed7cb477bfd123b1.tar.xz
mullvadvpn-4bba94686852e0973de4a711ed7cb477bfd123b1.zip
Merge branch 'login-on-api-error'
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/LoginFragment.kt14
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadDaemon.kt4
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/AccountCache.kt8
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/model/GetAccountDataResult.kt8
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()
+}