diff options
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() } |
