diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-04-30 13:11:14 -0300 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-04-30 13:11:14 -0300 |
| commit | bdae0324fbd0e968f43f910d8bdb1f0634aaa40f (patch) | |
| tree | 58eaae7673d83eae86b66a0b692cca29da4ad717 /android | |
| parent | 9737bd153ecea81fe5e9c0efd41e7b0f890f8054 (diff) | |
| parent | f02ebb517ca8434e1326668aa562b4bb32dff2a5 (diff) | |
| download | mullvadvpn-bdae0324fbd0e968f43f910d8bdb1f0634aaa40f.tar.xz mullvadvpn-bdae0324fbd0e968f43f910d8bdb1f0634aaa40f.zip | |
Merge branch 'fix-crash-on-wireguard-key-screen'
Diffstat (limited to 'android')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/ui/WireguardKeyFragment.kt | 23 | ||||
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/util/JobTracker.kt | 12 |
2 files changed, 26 insertions, 9 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/WireguardKeyFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/WireguardKeyFragment.kt index 94abcf2ee5..e72a4c495c 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/WireguardKeyFragment.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/WireguardKeyFragment.kt @@ -36,6 +36,9 @@ class WireguardKeyFragment : ServiceDependentFragment(OnNoService.GoToLaunchScre private lateinit var timeAgoFormatter: TimeAgoFormatter + private var greenColor: Int = 0 + private var redColor: Int = 0 + private var tunnelStateListener: Int? = null private var tunnelState: TunnelState = TunnelState.Disconnected() @@ -96,7 +99,11 @@ class WireguardKeyFragment : ServiceDependentFragment(OnNoService.GoToLaunchScre override fun onAttach(context: Context) { super.onAttach(context) - timeAgoFormatter = TimeAgoFormatter(context.resources) + val resources = context.resources + + redColor = resources.getColor(R.color.red) + greenColor = resources.getColor(R.color.green) + timeAgoFormatter = TimeAgoFormatter(resources) } override fun onSafelyCreateView( @@ -230,9 +237,9 @@ class WireguardKeyFragment : ServiceDependentFragment(OnNoService.GoToLaunchScre private fun updateOfflineStatus() { if (reconnectionExpected) { - setStatusMessage(R.string.wireguard_key_reconnecting, R.color.green) + setStatusMessage(R.string.wireguard_key_reconnecting, greenColor) } else { - setStatusMessage(R.string.wireguard_key_blocked_state_message, R.color.red) + setStatusMessage(R.string.wireguard_key_blocked_state_message, redColor) } } @@ -241,7 +248,7 @@ class WireguardKeyFragment : ServiceDependentFragment(OnNoService.GoToLaunchScre val replacementFailure = keyStatus.replacementFailure if (replacementFailure != null) { - setStatusMessage(failureMessage(replacementFailure), R.color.red) + setStatusMessage(failureMessage(replacementFailure), redColor) } else { updateKeyIsValid(verificationWasDone, keyStatus.verified) } @@ -252,11 +259,11 @@ class WireguardKeyFragment : ServiceDependentFragment(OnNoService.GoToLaunchScre private fun updateKeyIsValid(verificationWasDone: Boolean, verified: Boolean?) { when (verified) { - true -> setStatusMessage(R.string.wireguard_key_valid, R.color.green) - false -> setStatusMessage(R.string.wireguard_key_invalid, R.color.red) + true -> setStatusMessage(R.string.wireguard_key_valid, greenColor) + false -> setStatusMessage(R.string.wireguard_key_invalid, redColor) null -> { if (verificationWasDone) { - setStatusMessage(R.string.wireguard_key_verification_failure, R.color.red) + setStatusMessage(R.string.wireguard_key_verification_failure, redColor) } else { statusMessage.visibility = View.GONE } @@ -296,7 +303,7 @@ class WireguardKeyFragment : ServiceDependentFragment(OnNoService.GoToLaunchScre private fun setStatusMessage(message: Int, color: Int) { statusMessage.setText(message) - statusMessage.setTextColor(resources.getColor(color)) + statusMessage.setTextColor(color) statusMessage.visibility = View.VISIBLE } diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/util/JobTracker.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/util/JobTracker.kt index 7be0668f61..6e279452da 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/util/JobTracker.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/util/JobTracker.kt @@ -8,6 +8,7 @@ import kotlinx.coroutines.launch class JobTracker { private val jobs = HashMap<Long, Job>() + private val reaperJobs = HashMap<Long, Job>() private val namedJobs = HashMap<String, Long>() private var jobIdCounter = 0L @@ -18,7 +19,9 @@ class JobTracker { jobIdCounter += 1 - jobs.put(jobId, GlobalScope.launch(Dispatchers.Default) { + jobs.put(jobId, job) + + reaperJobs.put(jobId, GlobalScope.launch(Dispatchers.Default) { job.join() synchronized(jobs) { @@ -69,6 +72,7 @@ class JobTracker { fun cancelJob(jobId: Long) { synchronized(jobs) { jobs.remove(jobId)?.cancel() + reaperJobs.remove(jobId)?.cancel() } } @@ -78,7 +82,13 @@ class JobTracker { job.cancel() } + for (job in reaperJobs.values) { + job.cancel() + } + jobs.clear() + reaperJobs.clear() + namedJobs.clear() } } } |
