diff options
Diffstat (limited to 'android')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt | 15 | ||||
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadDaemon.kt | 1 |
2 files changed, 15 insertions, 1 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt index b288ecfdbc..ae3194c5aa 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt @@ -32,6 +32,7 @@ class ConnectFragment : Fragment() { private var daemon = CompletableDeferred<MullvadDaemon>() private var vpnPermission = CompletableDeferred<Unit>() + private var fetchInitialStateJob = fetchInitialState() private var generateWireguardKeyJob = generateWireguardKey() private var activeAction: Job? = null @@ -94,13 +95,25 @@ class ConnectFragment : Fragment() { } private fun attachListener() = GlobalScope.launch(Dispatchers.Default) { - daemon.await().onTunnelStateChange = { state -> updateViewJob = updateView(state) } + daemon.await().onTunnelStateChange = { state -> + synchronized(this@ConnectFragment) { + updateViewJob = updateView(state) + } + } } private fun detachListener() = GlobalScope.launch(Dispatchers.Default) { daemon.await().onTunnelStateChange = null } + private fun fetchInitialState() = GlobalScope.launch(Dispatchers.Default) { + val state = daemon.await().getState() + + synchronized(this@ConnectFragment) { + updateViewJob = updateViewJob ?: updateView(state) + } + } + private fun generateWireguardKey() = GlobalScope.launch(Dispatchers.Default) { val daemon = this@ConnectFragment.daemon.await() val key = daemon.getWireguardKey() diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadDaemon.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadDaemon.kt index ff3abeea80..5dd6401615 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadDaemon.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadDaemon.kt @@ -21,6 +21,7 @@ class MullvadDaemon(val vpnService: MullvadVpnService) { external fun getAccountData(accountToken: String): AccountData? external fun getRelayLocations(): RelayList external fun getSettings(): Settings + external fun getState(): TunnelStateTransition external fun getWireguardKey(): PublicKey? external fun setAccount(accountToken: String?) external fun updateRelaySettings(update: RelaySettingsUpdate) |
