From 7cf785d9a8c745b961eaa68c9cddbc20d7bc7fe1 Mon Sep 17 00:00:00 2001 From: Guillaume Jacquart Date: Thu, 24 Feb 2022 07:27:53 +0000 Subject: Improve trackers statistics accuracy, #4584, #4580, #4588 --- .../domain/usecases/TrackersStateUseCase.kt | 4 -- .../domain/usecases/TrackersStatisticsUseCase.kt | 52 +++++++++++++++------- 2 files changed, 37 insertions(+), 19 deletions(-) (limited to 'app/src/main/java/foundation/e/privacycentralapp/domain') 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 e140b19..e8759cb 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 @@ -68,10 +68,6 @@ class TrackersStateUseCase( return permissionsPrivacyModule.getApplicationDescription(packageName) } - fun getTrackers(appUid: Int): List { - return trackersPrivacyModule.getTrackersForApp(appUid) - } - fun isWhitelisted(appUid: Int): Boolean { return 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 fcc3676..2ed1077 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,37 +18,59 @@ package foundation.e.privacycentralapp.domain.usecases import foundation.e.privacymodules.trackers.ITrackTrackersPrivacyModule +import foundation.e.privacymodules.trackers.Tracker +import kotlinx.coroutines.channels.awaitClose +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.callbackFlow class TrackersStatisticsUseCase( private val trackTrackersPrivacyModule: ITrackTrackersPrivacyModule ) { - fun getPastDayTrackersCalls(): List { - return trackTrackersPrivacyModule.getPastDayTrackersCalls().pruneEmptyHistoric() + fun listenUpdates(): Flow = callbackFlow { + val listener = object : ITrackTrackersPrivacyModule.Listener { + override fun onNewData() { + offer(Unit) + } + } + awaitClose { trackTrackersPrivacyModule.removeListener(listener) } } - fun getDayMonthYearStatistics(): Triple, List, List> { - return Triple( - trackTrackersPrivacyModule.getPastDayTrackersCalls().pruneEmptyHistoric(), - trackTrackersPrivacyModule.getPastMonthTrackersCalls().pruneEmptyHistoric(), - trackTrackersPrivacyModule.getPastYearTrackersCalls().pruneEmptyHistoric() - ) + fun listenDayStatistics(): Flow, Int, Int>> = callbackFlow { + val listener = object : ITrackTrackersPrivacyModule.Listener { + override fun onNewData() { + offer(getDayStatistics()) + } + } + + offer(getDayStatistics()) + trackTrackersPrivacyModule.addListener(listener) + awaitClose { trackTrackersPrivacyModule.removeListener(listener) } } - fun getDayMonthYearCounts(): Triple { + fun getDayStatistics(): Triple, Int, Int> { return Triple( + trackTrackersPrivacyModule.getPastDayTrackersCalls(), trackTrackersPrivacyModule.getPastDayTrackersCount(), - trackTrackersPrivacyModule.getPastMonthTrackersCount(), - trackTrackersPrivacyModule.getPastYearTrackersCount() + trackTrackersPrivacyModule.getTrackersCount() ) } - fun getPastDayTrackersCount(): Int { - return trackTrackersPrivacyModule.getPastDayTrackersCount() + fun getDayMonthYearStatistics(): Triple< + Pair, Int>, + Pair, Int>, + Pair, Int>> { + return with(trackTrackersPrivacyModule) { + Triple( + getPastDayTrackersCalls() to getPastDayTrackersCount(), + getPastMonthTrackersCalls() to getPastMonthTrackersCount(), + getPastYearTrackersCalls() to getPastYearTrackersCount() + ) + } } - fun getTrackersCount(): Int { - return trackTrackersPrivacyModule.getTrackersCount() + fun getTrackers(appUid: Int): List { + return trackTrackersPrivacyModule.getTrackersForApp(appUid) } private fun List.pruneEmptyHistoric(): List { -- cgit v1.2.3