diff options
Diffstat (limited to 'android/src')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/LoginFragment.kt | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/LoginFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/LoginFragment.kt index ff6630b586..2714078268 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/LoginFragment.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/LoginFragment.kt @@ -3,6 +3,7 @@ package net.mullvad.mullvadvpn import kotlinx.coroutines.async import kotlinx.coroutines.delay import kotlinx.coroutines.launch +import kotlinx.coroutines.CompletableDeferred import kotlinx.coroutines.Deferred import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope @@ -29,7 +30,10 @@ class LoginFragment : Fragment() { private lateinit var loginFailStatus: View private lateinit var accountInput: AccountInput + private val loggedIn = CompletableDeferred<Unit>() + private var loginJob: Deferred<Boolean>? = null + private var advanceToNextScreenJob: Job? = null override fun onAttach(context: Context) { super.onAttach(context) @@ -60,6 +64,19 @@ class LoginFragment : Fragment() { return view } + override fun onResume() { + super.onResume() + advanceToNextScreenJob = GlobalScope.launch(Dispatchers.Main) { + loggedIn.join() + openConnectScreen() + } + } + + override fun onPause() { + advanceToNextScreenJob?.cancel() + super.onPause() + } + private fun createAccount() { val uri = Uri.parse(parentActivity.getString(R.string.create_account_url)) val intent = Intent(Intent.ACTION_VIEW, uri) @@ -104,7 +121,7 @@ class LoginFragment : Fragment() { private suspend fun loggedIn() { showLoggedInMessage() delay(1000) - openConnectScreen() + loggedIn.complete(Unit) } private fun showLoggedInMessage() { |
