summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-05-24 20:39:46 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-05-27 10:59:46 +0000
commita4e946805336df4f7f468e9732f32a7568d52674 (patch)
tree358ae233daf1ca3687be6444e02196a671721158 /android/src
parent7c0a1b1c97c94751022173ebf99da663aef89e80 (diff)
downloadmullvadvpn-a4e946805336df4f7f468e9732f32a7568d52674.tar.xz
mullvadvpn-a4e946805336df4f7f468e9732f32a7568d52674.zip
Generate Wireguard key earlier in `ConnectFragment`
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt19
1 files changed, 13 insertions, 6 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt
index 58e7ef0ed1..5c18b749bb 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt
@@ -1,6 +1,7 @@
package net.mullvad.mullvadvpn
import kotlinx.coroutines.launch
+import kotlinx.coroutines.CompletableDeferred
import kotlinx.coroutines.Deferred
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
@@ -23,16 +24,18 @@ class ConnectFragment : Fragment() {
private lateinit var notificationBanner: NotificationBanner
private lateinit var status: ConnectionStatus
- private lateinit var daemon: Deferred<MullvadDaemon>
+ private var daemon = CompletableDeferred<MullvadDaemon>()
+
+ private var generateWireguardKeyJob = generateWireguardKey()
private var attachListenerJob: Job? = null
- private var generateWireguardKeyJob: Job? = null
private var updateViewJob: Job? = null
+ private var waitForDaemonJob: Job? = null
override fun onAttach(context: Context) {
super.onAttach(context)
- daemon = (context as MainActivity).asyncDaemon
+ waitForDaemonJob = waitForDaemon((context as MainActivity).asyncDaemon)
}
override fun onCreateView(
@@ -58,20 +61,24 @@ class ConnectFragment : Fragment() {
}
attachListenerJob = attachListener()
- generateWireguardKeyJob = generateWireguardKey()
return view
}
-
override fun onDestroyView() {
+ waitForDaemonJob?.cancel()
attachListenerJob?.cancel()
detachListener()
- generateWireguardKeyJob?.cancel()
+ generateWireguardKeyJob.cancel()
updateViewJob?.cancel()
super.onDestroyView()
}
+ private fun waitForDaemon(asyncDaemon: Deferred<MullvadDaemon>) =
+ GlobalScope.launch(Dispatchers.Default) {
+ daemon.complete(asyncDaemon.await())
+ }
+
private fun attachListener() = GlobalScope.launch(Dispatchers.Default) {
daemon.await().onTunnelStateChange = { state -> updateViewJob = updateView(state) }
}