aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/foundation/e/privacycentralapp/domain
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/foundation/e/privacycentralapp/domain')
-rw-r--r--app/src/main/java/foundation/e/privacycentralapp/domain/usecases/TrackersStateUseCase.kt30
-rw-r--r--app/src/main/java/foundation/e/privacycentralapp/domain/usecases/TrackersStatisticsUseCase.kt44
-rw-r--r--app/src/main/java/foundation/e/privacycentralapp/domain/usecases/UpdateWidgetUseCase.kt2
3 files changed, 52 insertions, 24 deletions
diff --git a/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/TrackersStateUseCase.kt b/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/TrackersStateUseCase.kt
index 6417fce..10c1ad0 100644
--- a/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/TrackersStateUseCase.kt
+++ b/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/TrackersStateUseCase.kt
@@ -22,17 +22,15 @@ import foundation.e.privacycentralapp.data.repositories.LocalStateRepository
import foundation.e.privacycentralapp.data.repositories.TrackersRepository
import foundation.e.privacymodules.permissions.PermissionsPrivacyModule
import foundation.e.privacymodules.permissions.data.ApplicationDescription
-import foundation.e.privacymodules.trackers.IBlockTrackersPrivacyModule
-import foundation.e.privacymodules.trackers.ITrackTrackersPrivacyModule
-import foundation.e.privacymodules.trackers.Tracker
+import foundation.e.privacymodules.trackers.api.IBlockTrackersPrivacyModule
+import foundation.e.privacymodules.trackers.api.ITrackTrackersPrivacyModule
+import foundation.e.privacymodules.trackers.api.Tracker
import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.launch
class TrackersStateUseCase(
private val blockTrackersPrivacyModule: IBlockTrackersPrivacyModule,
private val trackersPrivacyModule: ITrackTrackersPrivacyModule,
- private val permissionsPrivacyModule: PermissionsPrivacyModule,
private val localStateRepository: LocalStateRepository,
private val trackersRepository: TrackersRepository,
private val appListsRepository: AppListsRepository,
@@ -65,13 +63,8 @@ class TrackersStateUseCase(
return appListsRepository.getApplicationDescription(appUid)
}
- fun isWhitelisted(appUid: Int): Boolean {
- return if (appUid == appListsRepository.dummySystemApp.uid) {
- appListsRepository.getHiddenSystemApps().any {
- blockTrackersPrivacyModule.isWhitelisted(it.uid)
- }
- } else blockTrackersPrivacyModule.isWhitelisted(appUid)
- }
+ fun isWhitelisted(appUid: Int)
+ = isWhitelisted(appUid, appListsRepository, blockTrackersPrivacyModule)
fun getTrackersWhitelistIds(appUid: Int): List<String> {
return if (appUid == appListsRepository.dummySystemApp.uid) {
@@ -114,3 +107,16 @@ class TrackersStateUseCase(
trackersPrivacyModule.start(trackersRepository.trackers, enableNotification = false)
}
}
+
+
+fun isWhitelisted(
+ appUid: Int,
+ appListsRepository: AppListsRepository,
+ blockTrackersPrivacyModule: IBlockTrackersPrivacyModule
+): Boolean {
+ return if (appUid == appListsRepository.dummySystemApp.uid) {
+ appListsRepository.getHiddenSystemApps().any {
+ blockTrackersPrivacyModule.isWhitelisted(it.uid)
+ }
+ } else blockTrackersPrivacyModule.isWhitelisted(appUid)
+}
diff --git a/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/TrackersStatisticsUseCase.kt b/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/TrackersStatisticsUseCase.kt
index 5abe0b8..52e0bad 100644
--- a/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/TrackersStatisticsUseCase.kt
+++ b/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/TrackersStatisticsUseCase.kt
@@ -18,15 +18,16 @@
package foundation.e.privacycentralapp.domain.usecases
import android.content.res.Resources
+import android.util.Log
import foundation.e.privacycentralapp.R
import foundation.e.privacycentralapp.common.throttleFirst
import foundation.e.privacycentralapp.data.repositories.AppListsRepository
import foundation.e.privacycentralapp.domain.entities.AppWithCounts
import foundation.e.privacycentralapp.domain.entities.TrackersPeriodicStatistics
import foundation.e.privacymodules.permissions.data.ApplicationDescription
-import foundation.e.privacymodules.trackers.IBlockTrackersPrivacyModule
-import foundation.e.privacymodules.trackers.ITrackTrackersPrivacyModule
-import foundation.e.privacymodules.trackers.Tracker
+import foundation.e.privacymodules.trackers.api.IBlockTrackersPrivacyModule
+import foundation.e.privacymodules.trackers.api.ITrackTrackersPrivacyModule
+import foundation.e.privacymodules.trackers.api.Tracker
import kotlinx.coroutines.FlowPreview
import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.flow.Flow
@@ -172,24 +173,45 @@ class TrackersStatisticsUseCase(
.map { apps ->
val callsByApp = trackTrackersPrivacyModule.getPastDayTrackersCallsByApps()
apps.map { app ->
- val (blockedLeaks, leaks) = callsByApp.getOrDefault(app.uid, 0 to 0)
AppWithCounts(
app = app,
isWhitelisted = !blockTrackersPrivacyModule.isBlockingEnabled() ||
- blockTrackersPrivacyModule.isWhitelisted(app.uid),
- trackersCount = appListsRepository.foldForHiddenSystemApp(app.uid) {
- trackersCounts.getOrDefault(it, 0)
+ isWhitelisted(app.uid, appListsRepository, blockTrackersPrivacyModule),
+ trackersCount = if (app.uid == appListsRepository.dummySystemApp.uid) {
+ getHiddenSystemAppsTrackersCount()
+ } else {
+ trackersCounts.getOrDefault(app.uid, 0)
},
- whiteListedTrackersCount = appListsRepository.foldForHiddenSystemApp(app.uid) {
- blockTrackersPrivacyModule.getWhiteList(it).size
+ whiteListedTrackersCount = if (app.uid == appListsRepository.dummySystemApp.uid) {
+ getHiddenSystemAppWhitelistedTrackersCount()
+ } else {
+ blockTrackersPrivacyModule.getWhiteList(app.uid).size
},
- blockedLeaks = blockedLeaks,
- leaks = leaks
+ blockedLeaks = appListsRepository.foldForHiddenSystemApp(app.uid) {
+ appUid -> callsByApp.getOrDefault(appUid, 0 to 0).first
+ },
+ leaks = appListsRepository.foldForHiddenSystemApp(app.uid) {
+ appUid -> callsByApp.getOrDefault(appUid, 0 to 0).second
+ }
)
}.sortedWith(mostLeakedAppsComparator)
}
}
+ private fun getHiddenSystemAppsTrackersCount(): Int {
+ return trackTrackersPrivacyModule.getTrackersCount(
+ appListsRepository.getHiddenSystemApps().map { it.uid }
+ )
+ }
+
+ private fun getHiddenSystemAppWhitelistedTrackersCount(): Int {
+ return appListsRepository.getHiddenSystemApps().fold(HashSet<String>()) { acc, app ->
+ acc.addAll(blockTrackersPrivacyModule.getWhiteList(app.uid).map { it.id })
+ acc
+ }.size
+ }
+
+
private val mostLeakedAppsComparator: Comparator<AppWithCounts> = Comparator { o1, o2 ->
val leaks = o2.leaks - o1.leaks
if (leaks != 0) leaks else {
diff --git a/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/UpdateWidgetUseCase.kt b/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/UpdateWidgetUseCase.kt
index dab0b18..f70065c 100644
--- a/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/UpdateWidgetUseCase.kt
+++ b/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/UpdateWidgetUseCase.kt
@@ -18,7 +18,7 @@
package foundation.e.privacycentralapp.domain.usecases
import foundation.e.privacycentralapp.data.repositories.LocalStateRepository
-import foundation.e.privacymodules.trackers.ITrackTrackersPrivacyModule
+import foundation.e.privacymodules.trackers.api.ITrackTrackersPrivacyModule
class UpdateWidgetUseCase(
private val localStateRepository: LocalStateRepository,