diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-05-22 16:40:14 -0300 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-05-22 16:40:14 -0300 |
| commit | 11a05dad217354464ce8f47c2b66cb4851e090f1 (patch) | |
| tree | 2e5aea78112e19f15becc3769b7519963875a478 /android | |
| parent | 1d9a3f9c6a3bc536de0a92654d87f982ef2bb219 (diff) | |
| parent | 51eed2f2ed26592141f741d680241d26a79306a4 (diff) | |
| download | mullvadvpn-11a05dad217354464ce8f47c2b66cb4851e090f1.tar.xz mullvadvpn-11a05dad217354464ce8f47c2b66cb4851e090f1.zip | |
Merge branch 'login-on-android'
Diffstat (limited to 'android')
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) |
