diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2021-01-04 17:58:22 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2021-04-12 13:19:37 +0000 |
| commit | 772f9580de1d486db3e547fa459c88610c32a137 (patch) | |
| tree | 7dfc9a5c975225c71bdbb15f4cb0a3f00d46d9e6 /android/src/main | |
| parent | 948f88006f2b8baf9be0fc8eba37940fad113ec0 (diff) | |
| download | mullvadvpn-772f9580de1d486db3e547fa459c88610c32a137.tar.xz mullvadvpn-772f9580de1d486db3e547fa459c88610c32a137.zip | |
Use an `Intermittent<Boolean>` for VPN permission
Diffstat (limited to 'android/src/main')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/service/ConnectionProxy.kt | 13 | ||||
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt | 2 |
2 files changed, 8 insertions, 7 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/ConnectionProxy.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/ConnectionProxy.kt index 5bfdb25f07..fc5e6c9366 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/ConnectionProxy.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/ConnectionProxy.kt @@ -3,7 +3,6 @@ package net.mullvad.mullvadvpn.service import android.content.Context import android.content.Intent import android.net.VpnService -import kotlinx.coroutines.CompletableDeferred import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.Job @@ -15,6 +14,7 @@ import kotlinx.coroutines.delay import kotlinx.coroutines.launch import net.mullvad.mullvadvpn.model.TunnelState import net.mullvad.mullvadvpn.ui.MainActivity +import net.mullvad.mullvadvpn.util.Intermittent import net.mullvad.talpid.tunnel.ActionAfterDisconnect import net.mullvad.talpid.util.EventNotifier @@ -35,9 +35,10 @@ class ConnectionProxy(val context: Context, val daemon: MullvadDaemon) { private val initialState: TunnelState = TunnelState.Disconnected + val vpnPermission = Intermittent<Boolean>() + var onStateChange = EventNotifier(initialState) var onUiStateChange = EventNotifier(initialState) - var vpnPermission = CompletableDeferred<Boolean>() var state by onStateChange.notifiable() private set @@ -58,7 +59,6 @@ class ConnectionProxy(val context: Context, val daemon: MullvadDaemon) { fun connect() { if (anticipateConnectingState()) { - requestVpnPermission() commandChannel.sendBlocking(Command.CONNECT) } } @@ -92,6 +92,7 @@ class ConnectionProxy(val context: Context, val daemon: MullvadDaemon) { when (command) { Command.CONNECT -> { + requestVpnPermission() vpnPermission.await() daemon.connect() } @@ -178,13 +179,13 @@ class ConnectionProxy(val context: Context, val daemon: MullvadDaemon) { resetAnticipatedStateJob = newJob } - private fun requestVpnPermission() { + private suspend fun requestVpnPermission() { val intent = VpnService.prepare(context) - vpnPermission = CompletableDeferred() + vpnPermission.update(null) if (intent == null) { - vpnPermission.complete(true) + vpnPermission.update(true) } else { val activity = mainActivity diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt index 486e1d156c..110e9e68ee 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt @@ -231,6 +231,6 @@ open class MainActivity : FragmentActivity() { } private fun setVpnPermission(allow: Boolean) = GlobalScope.launch(Dispatchers.Default) { - serviceConnection?.connectionProxy?.vpnPermission?.complete(allow) + serviceConnection?.connectionProxy?.vpnPermission?.update(allow) } } |
