summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-06-11 11:58:12 -0300
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-06-11 11:58:12 -0300
commitefee31b9090853a2b0864737a38f90195623ba98 (patch)
tree4219ecbfbf08a86ae3215199ce5c86831f7995d3 /android
parent14d227892a2e5de8045ec185188a69ad7ada8813 (diff)
parentcac7c01447b7e91acd72900f35a3610db36785cc (diff)
downloadmullvadvpn-efee31b9090853a2b0864737a38f90195623ba98.tar.xz
mullvadvpn-efee31b9090853a2b0864737a38f90195623ba98.zip
Merge branch 'fetch-current-tunnel-state'
Diffstat (limited to 'android')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt15
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadDaemon.kt1
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)