diff options
Diffstat (limited to 'android/src/main')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt | 2 | ||||
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/service/SplitTunnelling.kt | 21 |
2 files changed, 20 insertions, 3 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 317ca72eed..f4fb25a895 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt @@ -242,7 +242,7 @@ class MullvadVpnService : TalpidVpnService() { pendingAction = null } - val splitTunnelling = SplitTunnelling().apply { + val splitTunnelling = SplitTunnelling(this).apply { onChange = { excludedApps -> disallowedApps = excludedApps markTunAsStale() diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/SplitTunnelling.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/SplitTunnelling.kt index 0722c2fc56..f3624ce25b 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/SplitTunnelling.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/SplitTunnelling.kt @@ -1,9 +1,14 @@ package net.mullvad.mullvadvpn.service +import android.content.Context import kotlin.properties.Delegates.observable -class SplitTunnelling { +private const val SHARED_PREFERENCES = "split_tunnelling" +private const val KEY_ENABLED = "enabled" + +class SplitTunnelling(context: Context) { private val excludedApps = HashSet<String>() + private val preferences = context.getSharedPreferences(SHARED_PREFERENCES, Context.MODE_PRIVATE) val excludedAppList get() = if (enabled) { @@ -12,7 +17,10 @@ class SplitTunnelling { emptyList() } - var enabled by observable(false) { _, _, _ -> update() } + var enabled by observable(preferences.getBoolean(KEY_ENABLED, false)) { _, _, _ -> + enabledChanged() + } + var onChange: ((List<String>) -> Unit)? = null fun isAppExcluded(appPackageName: String) = excludedApps.contains(appPackageName) @@ -27,6 +35,15 @@ class SplitTunnelling { update() } + private fun enabledChanged() { + preferences.edit().apply { + putBoolean(KEY_ENABLED, enabled) + apply() + } + + update() + } + private fun update() { onChange?.invoke(excludedAppList) } |
