diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-07-04 03:06:03 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-07-22 16:36:57 +0000 |
| commit | a36f22f66360252401f31fb4c3b3d9a2b6634447 (patch) | |
| tree | 5a1256802248d1ea2f677c32780efce2915b6f98 /android/src | |
| parent | dc7bdc7783b391d08e6c64aa8c6c92227f7fbf47 (diff) | |
| download | mullvadvpn-a36f22f66360252401f31fb4c3b3d9a2b6634447.tar.xz mullvadvpn-a36f22f66360252401f31fb4c3b3d9a2b6634447.zip | |
Store split tunnelling state in shared prefs.
Diffstat (limited to 'android/src')
| -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) } |
