summaryrefslogtreecommitdiffhomepage
path: root/android/src/main
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-09-09 09:59:31 -0300
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-09-09 09:59:31 -0300
commitc840a15588db413c6cc4d39cce70fe6962f89a56 (patch)
tree35f6d118bc0d7a316a616c601c94f65be28fdcc4 /android/src/main
parent2650248f19ff4822d057408a0c1f20ac3c307c16 (diff)
parentcbde7fd311f95b58451bd0d0fb6a96937a33a2c9 (diff)
downloadmullvadvpn-c840a15588db413c6cc4d39cce70fe6962f89a56.tar.xz
mullvadvpn-c840a15588db413c6cc4d39cce70fe6962f89a56.zip
Merge branch 'fix-inconsistent-quick-settings-tile-behavior'
Diffstat (limited to 'android/src/main')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt55
1 files changed, 26 insertions, 29 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
index 9ee87d015e..1bd29ba2fa 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
@@ -68,20 +68,14 @@ class MullvadVpnService : TalpidVpnService() {
private lateinit var notificationManager: ForegroundNotificationManager
private lateinit var tunnelStateUpdater: TunnelStateUpdater
- private var pendingAction: PendingAction? = null
- set(value) {
- field = value
-
- instance?.connectionProxy?.let { activeConnectionProxy ->
- when (value) {
- PendingAction.Connect -> activeConnectionProxy.connect()
- PendingAction.Disconnect -> activeConnectionProxy.disconnect()
- null -> {}
- }
-
- field = null
- }
+ private var pendingAction by observable<PendingAction?>(null) { _, _, action ->
+ instance?.let { activeInstance ->
+ handlePendingAction(
+ activeInstance.connectionProxy,
+ activeInstance.settingsListener.settings
+ )
}
+ }
private var isBound by observable(false) { _, _, isBound ->
notificationManager.lockedToForeground = isBound
@@ -221,22 +215,7 @@ class MullvadVpnService : TalpidVpnService() {
private fun setUpInstance(daemon: MullvadDaemon, settings: Settings) {
val settingsListener = SettingsListener(daemon, settings)
-
- val connectionProxy = ConnectionProxy(this, daemon).apply {
- when (pendingAction) {
- PendingAction.Connect -> {
- if (settings.accountToken != null) {
- connect()
- } else {
- openUi()
- }
- }
- PendingAction.Disconnect -> disconnect()
- null -> {}
- }
-
- pendingAction = null
- }
+ val connectionProxy = ConnectionProxy(this, daemon)
val splitTunneling = SplitTunneling(this).apply {
onChange = { excludedApps ->
@@ -246,6 +225,8 @@ class MullvadVpnService : TalpidVpnService() {
}
}
+ handlePendingAction(connectionProxy, settings)
+
instance = ServiceInstance(
daemon,
connectionProxy,
@@ -279,6 +260,22 @@ class MullvadVpnService : TalpidVpnService() {
setUp()
}
+ private fun handlePendingAction(connectionProxy: ConnectionProxy, settings: Settings) {
+ when (pendingAction) {
+ PendingAction.Connect -> {
+ if (settings.accountToken != null) {
+ connectionProxy.connect()
+ } else {
+ openUi()
+ }
+ }
+ PendingAction.Disconnect -> connectionProxy.disconnect()
+ null -> return
+ }
+
+ pendingAction = null
+ }
+
private fun openUi() {
val intent = Intent(this, MainActivity::class.java).apply {
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)