summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-05-22 16:40:14 -0300
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-05-22 16:40:14 -0300
commit11a05dad217354464ce8f47c2b66cb4851e090f1 (patch)
tree2e5aea78112e19f15becc3769b7519963875a478 /android
parent1d9a3f9c6a3bc536de0a92654d87f982ef2bb219 (diff)
parent51eed2f2ed26592141f741d680241d26a79306a4 (diff)
downloadmullvadvpn-11a05dad217354464ce8f47c2b66cb4851e090f1.tar.xz
mullvadvpn-11a05dad217354464ce8f47c2b66cb4851e090f1.zip
Merge branch 'login-on-android'
Diffstat (limited to 'android')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/LoginFragment.kt33
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadDaemon.kt4
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/model/AccountData.kt3
3 files changed, 36 insertions, 4 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/LoginFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/LoginFragment.kt
index 9159c93079..3ead35333c 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/LoginFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/LoginFragment.kt
@@ -1,5 +1,12 @@
package net.mullvad.mullvadvpn
+import kotlinx.coroutines.async
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.Deferred
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.GlobalScope
+import kotlinx.coroutines.Job
+
import android.os.Bundle
import android.os.Handler
import android.support.v4.app.Fragment
@@ -16,6 +23,8 @@ class LoginFragment : Fragment() {
private lateinit var loginFailStatus: View
private lateinit var accountInput: AccountInput
+ private var loginJob: Deferred<Boolean>? = null
+
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
@@ -45,11 +54,27 @@ class LoginFragment : Fragment() {
accountInput.state = LoginState.InProgress
- // TODO: Actually log in
- if ("1234567890".equals(accountToken)) {
- Handler().postDelayed(Runnable { loggedIn() }, 1000)
+ performLogin(accountToken)
+ }
+
+ private fun performLogin(accountToken: String) = GlobalScope.launch(Dispatchers.Main) {
+ loginJob?.cancel()
+ loginJob = GlobalScope.async(Dispatchers.Default) {
+ val parentActivity = activity as MainActivity
+ val daemon = parentActivity.asyncDaemon.await()
+ val accountData = daemon.getAccountData(accountToken)
+
+ if (accountData != null) {
+ true
+ } else {
+ false
+ }
+ }
+
+ if (loginJob?.await() ?: false) {
+ loggedIn()
} else {
- Handler().postDelayed(Runnable { loginFailure() }, 1000)
+ loginFailure()
}
}
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadDaemon.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadDaemon.kt
index d5ab845f89..c7025ea644 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadDaemon.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadDaemon.kt
@@ -1,10 +1,14 @@
package net.mullvad.mullvadvpn
+import net.mullvad.mullvadvpn.model.AccountData
+
class MullvadDaemon {
init {
System.loadLibrary("mullvad_jni")
initialize()
}
+ external fun getAccountData(accountToken: String): AccountData?
+
private external fun initialize()
}
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/model/AccountData.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/model/AccountData.kt
new file mode 100644
index 0000000000..6dda6b8352
--- /dev/null
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/model/AccountData.kt
@@ -0,0 +1,3 @@
+package net.mullvad.mullvadvpn.model
+
+data class AccountData(val expiry: String)