diff options
Diffstat (limited to 'app/src/main/java/foundation/e/privacycentralapp/domain')
| -rw-r--r-- | app/src/main/java/foundation/e/privacycentralapp/domain/usecases/TrackersStatisticsUseCase.kt | 43 |
1 files changed, 26 insertions, 17 deletions
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 52e0bad..0a47bc5 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,7 +18,6 @@ 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 @@ -156,6 +155,28 @@ class TrackersStatisticsUseCase( return trackers.sortedBy { it.label.lowercase() } } + fun getTrackersWithWhiteList(appUid: Int): List<Pair<Tracker, Boolean>> { + val trackers: List<Tracker> + val whiteListedTrackersIds: Set<String> + if (appUid == appListsRepository.dummySystemApp.uid) { + val hiddenApps = appListsRepository.getHiddenSystemApps() + trackers = trackTrackersPrivacyModule.getTrackers(hiddenApps.map { it.uid }) + + whiteListedTrackersIds = hiddenApps.fold(HashSet<String>()) { acc, app -> + acc.addAll(blockTrackersPrivacyModule.getWhiteList(app.uid).map { it.id }) + acc + } + + } else { + trackers = trackTrackersPrivacyModule.getTrackersForApp(appUid) + whiteListedTrackersIds = blockTrackersPrivacyModule.getWhiteList(appUid) + .map { it.id }.toSet() + } + + return trackers.sortedBy { it.label.lowercase() }.map { tracker -> tracker to whiteListedTrackersIds.any { tracker.id == it }} + } + + fun getCalls(appUid: Int): Pair<Int, Int> { return if (appUid == appListsRepository.dummySystemApp.uid) { appListsRepository.getHiddenSystemApps().map { @@ -168,6 +189,8 @@ class TrackersStatisticsUseCase( fun getAppsWithCounts(): Flow<List<AppWithCounts>> { val trackersCounts = trackTrackersPrivacyModule.getTrackersCountByApp() + val hiddenAppsTrackersWithWhiteList = + getTrackersWithWhiteList(appListsRepository.dummySystemApp.uid) return appListsRepository.getVisibleApps() .map { apps -> @@ -178,12 +201,12 @@ class TrackersStatisticsUseCase( isWhitelisted = !blockTrackersPrivacyModule.isBlockingEnabled() || isWhitelisted(app.uid, appListsRepository, blockTrackersPrivacyModule), trackersCount = if (app.uid == appListsRepository.dummySystemApp.uid) { - getHiddenSystemAppsTrackersCount() + hiddenAppsTrackersWithWhiteList.size } else { trackersCounts.getOrDefault(app.uid, 0) }, whiteListedTrackersCount = if (app.uid == appListsRepository.dummySystemApp.uid) { - getHiddenSystemAppWhitelistedTrackersCount() + hiddenAppsTrackersWithWhiteList.count { it.second } } else { blockTrackersPrivacyModule.getWhiteList(app.uid).size }, @@ -198,20 +221,6 @@ class TrackersStatisticsUseCase( } } - 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 { |
