summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-07-03 21:41:48 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-07-20 13:42:41 +0000
commit5907e2628262161590860bb179e98f10a091f09b (patch)
tree3884d8cd2f6cc0a3ae265b6128fee93387eb0602 /android/src
parenta358f925e83ebbdd838aa6a2162c48fe15a9d025 (diff)
downloadmullvadvpn-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.kt33
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)
+ }
+}