diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-07-03 21:41:48 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-07-20 13:42:41 +0000 |
| commit | 5907e2628262161590860bb179e98f10a091f09b (patch) | |
| tree | 3884d8cd2f6cc0a3ae265b6128fee93387eb0602 /android/src | |
| parent | a358f925e83ebbdd838aa6a2162c48fe15a9d025 (diff) | |
| download | mullvadvpn-5907e2628262161590860bb179e98f10a091f09b.tar.xz mullvadvpn-5907e2628262161590860bb179e98f10a091f09b.zip | |
Create `SplitTunnelling` helper class
Diffstat (limited to 'android/src')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/service/SplitTunnelling.kt | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/SplitTunnelling.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/SplitTunnelling.kt new file mode 100644 index 0000000000..0722c2fc56 --- /dev/null +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/SplitTunnelling.kt @@ -0,0 +1,33 @@ +package net.mullvad.mullvadvpn.service + +import kotlin.properties.Delegates.observable + +class SplitTunnelling { + private val excludedApps = HashSet<String>() + + val excludedAppList + get() = if (enabled) { + excludedApps.toList() + } else { + emptyList() + } + + var enabled by observable(false) { _, _, _ -> update() } + var onChange: ((List<String>) -> Unit)? = null + + fun isAppExcluded(appPackageName: String) = excludedApps.contains(appPackageName) + + fun excludeApp(appPackageName: String) { + excludedApps.add(appPackageName) + update() + } + + fun includeApp(appPackageName: String) { + excludedApps.remove(appPackageName) + update() + } + + private fun update() { + onChange?.invoke(excludedAppList) + } +} |
