diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-04-27 16:18:42 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-04-28 16:52:50 +0000 |
| commit | dcec99dd0006edc713005e61ffa267a21e5b2b7c (patch) | |
| tree | c6a0ae4d7ff51d30207c47c5afb394b3e30af13a /android/src/main | |
| parent | d67ddcba6d65a5d4a7d86c9d7ab065414c9e1bb0 (diff) | |
| download | mullvadvpn-dcec99dd0006edc713005e61ffa267a21e5b2b7c.tar.xz mullvadvpn-dcec99dd0006edc713005e61ffa267a21e5b2b7c.zip | |
Refactor `LoginFragment` to use `JobTracker`
Diffstat (limited to 'android/src/main')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt | 52 |
1 files changed, 25 insertions, 27 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt index 7b92118335..39be6f4065 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt @@ -8,15 +8,13 @@ import android.view.View import android.view.ViewGroup import android.widget.TextView import kotlinx.coroutines.CompletableDeferred -import kotlinx.coroutines.Deferred import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.Job -import kotlinx.coroutines.async import kotlinx.coroutines.delay import kotlinx.coroutines.launch import net.mullvad.mullvadvpn.R import net.mullvad.mullvadvpn.model.GetAccountDataResult +import net.mullvad.mullvadvpn.util.JobTracker class LoginFragment : ServiceDependentFragment(OnNoService.GoToLaunchScreen) { private lateinit var title: TextView @@ -26,12 +24,9 @@ class LoginFragment : ServiceDependentFragment(OnNoService.GoToLaunchScreen) { private lateinit var loginFailStatus: View private lateinit var accountInput: AccountInput + private val jobTracker = JobTracker() private val loggedIn = CompletableDeferred<Unit>() - private var loginJob: Deferred<Boolean>? = null - private var advanceToNextScreenJob: Job? = null - private var fetchHistoryJob: Job? = null - override fun onSafelyCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -58,16 +53,20 @@ class LoginFragment : ServiceDependentFragment(OnNoService.GoToLaunchScreen) { } override fun onSafelyResume() { - advanceToNextScreenJob = GlobalScope.launch(Dispatchers.Main) { + jobTracker.newUiJob("advanceToNextScreen") { loggedIn.join() openConnectScreen() } + fetchHistory() } override fun onSafelyPause() { - advanceToNextScreenJob?.cancel() - fetchHistoryJob?.cancel() + jobTracker.cancelJob("advanceToNextScreen") + } + + override fun onSafelyDestroyView() { + jobTracker.cancelAllJobs() } private fun createAccount() { @@ -91,33 +90,32 @@ class LoginFragment : ServiceDependentFragment(OnNoService.GoToLaunchScreen) { } private fun fetchHistory() { - fetchHistoryJob?.cancel() - fetchHistoryJob = GlobalScope.launch(Dispatchers.Main) { - val history = GlobalScope.async(Dispatchers.Default) { + jobTracker.newUiJob("fetchHistory") { + accountInput.accountHistory = jobTracker.runOnBackground() { daemon.getAccountHistory() } - accountInput.accountHistory = history.await() } } private fun performLogin(accountToken: String) = GlobalScope.launch(Dispatchers.Main) { - loginJob?.cancel() - loginJob = GlobalScope.async(Dispatchers.Default) { - val accountDataResult = daemon.getAccountData(accountToken) + jobTracker.newUiJob("login") { + val loginSucceeded = jobTracker.runOnBackground { + val accountDataResult = daemon.getAccountData(accountToken) - when (accountDataResult) { - is GetAccountDataResult.Ok, is GetAccountDataResult.RpcError -> { - daemon.setAccount(accountToken) - true + when (accountDataResult) { + is GetAccountDataResult.Ok, is GetAccountDataResult.RpcError -> { + daemon.setAccount(accountToken) + true + } + else -> false } - else -> false } - } - if (loginJob?.await() ?: false) { - loggedIn() - } else { - loginFailure() + if (loginSucceeded) { + loggedIn() + } else { + loginFailure() + } } } |
