diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-03-23 12:59:33 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-05-22 16:41:56 +0000 |
| commit | 51eed2f2ed26592141f741d680241d26a79306a4 (patch) | |
| tree | 2e5aea78112e19f15becc3769b7519963875a478 | |
| parent | 453c6ef689cc704273741b1768b4e5a0da5f4ad2 (diff) | |
| download | mullvadvpn-51eed2f2ed26592141f741d680241d26a79306a4.tar.xz mullvadvpn-51eed2f2ed26592141f741d680241d26a79306a4.zip | |
Implement login procedure
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/LoginFragment.kt | 33 |
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() } } |
