summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-03-23 12:59:33 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-05-22 16:41:56 +0000
commit51eed2f2ed26592141f741d680241d26a79306a4 (patch)
tree2e5aea78112e19f15becc3769b7519963875a478 /android/src
parent453c6ef689cc704273741b1768b4e5a0da5f4ad2 (diff)
downloadmullvadvpn-51eed2f2ed26592141f741d680241d26a79306a4.tar.xz
mullvadvpn-51eed2f2ed26592141f741d680241d26a79306a4.zip
Implement login procedure
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/LoginFragment.kt33
1 files changed, 29 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()
}
}