diff options
Diffstat (limited to 'android/src')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt | 12 |
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() } |
