summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
Diffstat (limited to 'android')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt12
1 files changed, 12 insertions, 0 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt
index 11bfabe912..58e7ef0ed1 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt
@@ -26,6 +26,7 @@ class ConnectFragment : Fragment() {
private lateinit var daemon: Deferred<MullvadDaemon>
private var attachListenerJob: Job? = null
+ private var generateWireguardKeyJob: Job? = null
private var updateViewJob: Job? = null
override fun onAttach(context: Context) {
@@ -57,6 +58,7 @@ class ConnectFragment : Fragment() {
}
attachListenerJob = attachListener()
+ generateWireguardKeyJob = generateWireguardKey()
return view
}
@@ -65,6 +67,7 @@ class ConnectFragment : Fragment() {
override fun onDestroyView() {
attachListenerJob?.cancel()
detachListener()
+ generateWireguardKeyJob?.cancel()
updateViewJob?.cancel()
super.onDestroyView()
}
@@ -77,6 +80,15 @@ class ConnectFragment : Fragment() {
daemon.await().onTunnelStateChange = null
}
+ private fun generateWireguardKey() = GlobalScope.launch(Dispatchers.Default) {
+ val daemon = this@ConnectFragment.daemon.await()
+ val key = daemon.getWireguardKey()
+
+ if (key == null) {
+ daemon.generateWireguardKey()
+ }
+ }
+
private fun connect() = GlobalScope.launch(Dispatchers.Default) {
daemon.await().connect()
}