diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-07-04 12:47:20 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-07-22 16:36:57 +0000 |
| commit | 060460086bdf699b4d4822be3f03295fadc6bc4d (patch) | |
| tree | 28b0db4d00053295037c519fe9279894c7e02ffd /android | |
| parent | a36f22f66360252401f31fb4c3b3d9a2b6634447 (diff) | |
| download | mullvadvpn-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.kt | 12 | ||||
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/ui/SplitTunnellingFragment.kt | 6 |
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() } |
