summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-07-04 12:47:20 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-07-22 16:36:57 +0000
commit060460086bdf699b4d4822be3f03295fadc6bc4d (patch)
tree28b0db4d00053295037c519fe9279894c7e02ffd /android
parenta36f22f66360252401f31fb4c3b3d9a2b6634447 (diff)
downloadmullvadvpn-060460086bdf699b4d4822be3f03295fadc6bc4d.tar.xz
mullvadvpn-060460086bdf699b4d4822be3f03295fadc6bc4d.zip
Persist excluded apps
Diffstat (limited to 'android')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/SplitTunnelling.kt12
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/SplitTunnellingFragment.kt6
2 files changed, 18 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
index f3624ce25b..13f6b242f1 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/SplitTunnelling.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/SplitTunnelling.kt
@@ -1,12 +1,14 @@
package net.mullvad.mullvadvpn.service
import android.content.Context
+import java.io.File
import kotlin.properties.Delegates.observable
private const val SHARED_PREFERENCES = "split_tunnelling"
private const val KEY_ENABLED = "enabled"
class SplitTunnelling(context: Context) {
+ private val appListFile = File(context.filesDir, "split-tunnelling.txt")
private val excludedApps = HashSet<String>()
private val preferences = context.getSharedPreferences(SHARED_PREFERENCES, Context.MODE_PRIVATE)
@@ -23,6 +25,12 @@ class SplitTunnelling(context: Context) {
var onChange: ((List<String>) -> Unit)? = null
+ init {
+ if (appListFile.exists()) {
+ excludedApps.addAll(appListFile.readLines())
+ }
+ }
+
fun isAppExcluded(appPackageName: String) = excludedApps.contains(appPackageName)
fun excludeApp(appPackageName: String) {
@@ -35,6 +43,10 @@ class SplitTunnelling(context: Context) {
update()
}
+ fun persist() {
+ appListFile.writeText(excludedApps.joinToString(separator = "\n"))
+ }
+
private fun enabledChanged() {
preferences.edit().apply {
putBoolean(KEY_ENABLED, enabled)
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/SplitTunnellingFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/SplitTunnellingFragment.kt
index 8e13e84ba7..a5097ac33e 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/SplitTunnellingFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/SplitTunnellingFragment.kt
@@ -84,6 +84,12 @@ class SplitTunnellingFragment : ServiceDependentFragment(OnNoService.GoToLaunchS
return view
}
+ override fun onSafelyPause() {
+ jobTracker.newBackgroundJob("persistExcludedApps") {
+ splitTunnelling.persist()
+ }
+ }
+
override fun onSafelyDestroyView() {
titleController.onDestroy()
}