diff options
5 files changed, 26 insertions, 25 deletions
diff --git a/app/build.gradle b/app/build.gradle index a453160..056246c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -101,7 +101,7 @@ dependencies { implementation 'foundation.e:privacymodule.trackerfilter:0.1.3' implementation 'foundation.e:privacymodule.api:0.4.3' implementation 'foundation.e:privacymodule.e-29:0.4.1' - implementation 'foundation.e:privacymodule.tor:0.1.1' + implementation 'foundation.e:privacymodule.tor:0.2.0' implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' diff --git a/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/IpScramblingStateUseCase.kt b/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/IpScramblingStateUseCase.kt index 3caab63..9e83eb1 100644 --- a/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/IpScramblingStateUseCase.kt +++ b/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/IpScramblingStateUseCase.kt @@ -80,6 +80,18 @@ class IpScramblingStateUseCase( applySettings(true, hideIp) } + val bypassTorApps: Set<String> get() = ipScramblerModule.appList + + fun toggleBypassTor(packageName: String) { + val currentList = bypassTorApps.toMutableSet() + if (currentList.contains(packageName)) { + currentList.remove(packageName) + } else { + currentList.add(packageName) + } + ipScramblerModule.appList = currentList + } + private fun applySettings(isQuickPrivacyEnabled: Boolean, isIpScramblingEnabled: Boolean) { when { isQuickPrivacyEnabled && isIpScramblingEnabled -> when (internetPrivacyMode.value) { @@ -88,7 +100,7 @@ class IpScramblingStateUseCase( if (intent != null) { permissionsPrivacyModule.setVpnPackageAuthorization(appDesc.packageName) } - ipScramblerModule.start() + ipScramblerModule.start(enableNotification = false) } else -> { Log.d("testQPFlow", "Not starting tor, already in started state") diff --git a/app/src/main/java/foundation/e/privacycentralapp/features/internetprivacy/InternetPrivacyFeature.kt b/app/src/main/java/foundation/e/privacycentralapp/features/internetprivacy/InternetPrivacyFeature.kt index 767ac7a..26370cf 100644 --- a/app/src/main/java/foundation/e/privacycentralapp/features/internetprivacy/InternetPrivacyFeature.kt +++ b/app/src/main/java/foundation/e/privacycentralapp/features/internetprivacy/InternetPrivacyFeature.kt @@ -57,13 +57,13 @@ class InternetPrivacyFeature( data class State( val mode: InternetPrivacyMode, val availableApps: List<ApplicationDescription>, - val ipScrambledApps: Collection<String>, + val bypassTorApps: Collection<String>, val selectedLocation: String, val availableLocationIds: List<String>, val forceRedraw: Boolean = false ) { fun getApps(): List<Pair<ApplicationDescription, Boolean>> { - return availableApps.map { it to (it.packageName in ipScrambledApps) } + return availableApps.map { it to (it.packageName !in bypassTorApps) } } val selectedLocationPosition get() = availableLocationIds.indexOf(selectedLocation) @@ -89,10 +89,10 @@ class InternetPrivacyFeature( data class QuickPrivacyUpdatedEffect(val enabled: Boolean) : Effect() object QuickPrivacyDisabledWarningEffect : Effect() data class ShowAndroidVpnDisclaimerEffect(val intent: Intent) : Effect() - data class IpScrambledAppsUpdatedEffect(val ipScrambledApps: Collection<String>) : Effect() + data class IpScrambledAppsUpdatedEffect(val bypassTorApps: Collection<String>) : Effect() data class AvailableAppsListEffect( val apps: List<ApplicationDescription>, - val ipScrambledApps: Collection<String> + val bypassTorApps: Collection<String> ) : Effect() data class LocationSelectedEffect(val locationId: String) : Effect() data class ErrorEffect(val message: String) : Effect() @@ -109,7 +109,7 @@ class InternetPrivacyFeature( initialState: State = State( mode = InternetPrivacyMode.REAL_IP, availableApps = emptyList(), - ipScrambledApps = emptyList(), + bypassTorApps = emptyList(), availableLocationIds = availablesLocationsIds, selectedLocation = "" ) @@ -118,10 +118,10 @@ class InternetPrivacyFeature( reducer = { state, effect -> when (effect) { is Effect.ModeUpdatedEffect -> state.copy(mode = effect.mode) - is Effect.IpScrambledAppsUpdatedEffect -> state.copy(ipScrambledApps = effect.ipScrambledApps) + is Effect.IpScrambledAppsUpdatedEffect -> state.copy(bypassTorApps = effect.bypassTorApps) is Effect.AvailableAppsListEffect -> state.copy( availableApps = effect.apps, - ipScrambledApps = effect.ipScrambledApps + bypassTorApps = effect.bypassTorApps ) is Effect.LocationSelectedEffect -> state.copy(selectedLocation = effect.locationId) Effect.QuickPrivacyDisabledWarningEffect -> state.copy(forceRedraw = !state.forceRedraw) @@ -134,13 +134,9 @@ class InternetPrivacyFeature( getQuickPrivacyStateUseCase.quickPrivacyEnabledFlow.map { Effect.QuickPrivacyUpdatedEffect(it) }, ipScramblingStateUseCase.internetPrivacyMode.map { Effect.ModeUpdatedEffect(it) }.shareIn(scope = coroutineScope, started = SharingStarted.Lazily, replay = 0), appListUseCase.getAppsUsingInternet().map { apps -> - if (ipScramblerModule.appList.isEmpty()) { - ipScramblerModule.appList = - apps.map { it.packageName }.toMutableSet() - } Effect.AvailableAppsListEffect( apps, - ipScramblerModule.appList + ipScramblingStateUseCase.bypassTorApps ) }, flowOf(Effect.LocationSelectedEffect(ipScramblerModule.exitCountry)) @@ -187,15 +183,8 @@ class InternetPrivacyFeature( } action is Action.ToggleAppIpScrambled -> { - val ipScrambledApps = mutableSetOf<String>() - ipScrambledApps.addAll(ipScramblerModule.appList) - if (ipScrambledApps.contains(action.packageName)) { - ipScrambledApps.remove(action.packageName) - } else { - ipScrambledApps.add(action.packageName) - } - ipScramblerModule.appList = ipScrambledApps - flowOf(Effect.IpScrambledAppsUpdatedEffect(ipScrambledApps = ipScrambledApps)) + ipScramblingStateUseCase.toggleBypassTor(action.packageName) + flowOf(Effect.IpScrambledAppsUpdatedEffect(bypassTorApps = ipScramblingStateUseCase.bypassTorApps)) } action is Action.SelectLocationAction -> { val locationId = state.availableLocationIds[action.position] diff --git a/app/src/main/java/foundation/e/privacycentralapp/features/trackers/TrackersFeature.kt b/app/src/main/java/foundation/e/privacycentralapp/features/trackers/TrackersFeature.kt index 4728158..64cc71e 100644 --- a/app/src/main/java/foundation/e/privacycentralapp/features/trackers/TrackersFeature.kt +++ b/app/src/main/java/foundation/e/privacycentralapp/features/trackers/TrackersFeature.kt @@ -115,7 +115,7 @@ class TrackersFeature( }, actor = { state, action -> when (action) { - Action.InitAction -> merge( + Action.InitAction -> merge<TrackersFeature.Effect>( flow { val statistics = trackersStatisticsUseCase.getDayMonthYearStatistics() val counts = trackersStatisticsUseCase.getDayMonthYearCounts() diff --git a/dependencies.gradle b/dependencies.gradle index 00c77de..0095881 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -19,7 +19,7 @@ libs.leakCanary = "com.squareup.leakcanary:leakcanary-android:2.6" libs.truth = "com.google.truth:truth:1.1" -versions.kotlin = "1.5.0" +versions.kotlin = "1.6.0" libs.Kotlin = [ stdlib: "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$versions.kotlin", gradlePlugin: "org.jetbrains.kotlin:kotlin-gradle-plugin:$versions.kotlin", |