diff options
Diffstat (limited to 'android')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt index 7680947faf..4466d22eaf 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt @@ -28,6 +28,7 @@ class ConnectFragment : Fragment() { private var generateWireguardKeyJob = generateWireguardKey() + private var activeAction: Job? = null private var attachListenerJob: Job? = null private var updateViewJob: Job? = null private var waitForDaemonJob: Job? = null @@ -96,13 +97,21 @@ class ConnectFragment : Fragment() { } } - private fun connect() = GlobalScope.launch(Dispatchers.Default) { - generateWireguardKeyJob.join() - daemon.await().connect() + private fun connect() { + activeAction?.cancel() + + activeAction = GlobalScope.launch(Dispatchers.Default) { + generateWireguardKeyJob.join() + daemon.await().connect() + } } - private fun disconnect() = GlobalScope.launch(Dispatchers.Default) { - daemon.await().disconnect() + private fun disconnect() { + activeAction?.cancel() + + activeAction = GlobalScope.launch(Dispatchers.Default) { + daemon.await().disconnect() + } } private fun updateView(state: TunnelStateTransition) = GlobalScope.launch(Dispatchers.Main) { |
