Loading app/src/main/java/foundation/e/privacycentralapp/data/repositories/AppListsRepository.kt +4 −0 Original line number Diff line number Diff line Loading @@ -59,6 +59,10 @@ class AppListsRepository( return appDescriptions.value.second } fun getVisibleAndHiddenApps(): List<ApplicationDescription> { return appDescriptions.value.first + appDescriptions.value.second } fun getApplicationDescription(packageName: String): ApplicationDescription? { return appDescriptions.value.first.find { it.packageName == packageName } } Loading app/src/main/java/foundation/e/privacycentralapp/domain/usecases/TrackersStatisticsUseCase.kt +20 −0 Original line number Diff line number Diff line Loading @@ -153,4 +153,24 @@ class TrackersStatisticsUseCase( } } } fun getNonBLockedTrackersCount(): Int { return if (blockTrackersPrivacyModule.isBlockingEnabled()) { val whiteListedTrackers = mutableSetOf<Tracker>() val whiteListedAppUids = blockTrackersPrivacyModule.getWhiteListedApp() appListsRepository.getVisibleAndHiddenApps().forEach { app -> if (app.uid in whiteListedAppUids) { whiteListedTrackers.addAll(getTrackers(app.uid)) } else { whiteListedTrackers.addAll(blockTrackersPrivacyModule.getWhiteList(app.uid)) } } whiteListedTrackers.size } else { trackTrackersPrivacyModule.getTrackersCount() } } } app/src/main/java/foundation/e/privacycentralapp/features/dashboard/DashboardFeature.kt +22 −30 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import foundation.e.privacycentralapp.domain.usecases.IpScramblingStateUseCase import foundation.e.privacycentralapp.domain.usecases.TrackersStateUseCase import foundation.e.privacycentralapp.domain.usecases.TrackersStatisticsUseCase import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.merge Loading @@ -53,8 +54,7 @@ class DashboardFeature( val isAllTrackersBlocked: Boolean = false, val locationMode: LocationMode = LocationMode.REAL_LOCATION, val internetPrivacyMode: InternetPrivacyMode = InternetPrivacyMode.REAL_IP, val totalGraph: Int? = null, // val graphData val leakedTrackersCount: Int? = null, val trackersCount: Int? = null, val activeTrackersCount: Int? = null, val dayStatistics: List<Pair<Int, Int>>? = null, Loading Loading @@ -87,7 +87,8 @@ class DashboardFeature( val dayStatistics: List<Pair<Int, Int>>, val dayLabels: List<String>, val dayTrackersCount: Int, val trackersCount: Int val trackersCount: Int, val activeTrackersCount: Int ) : Effect() data class TrackersBlockedUpdatedEffect(val areAllTrackersBlocked: Boolean) : Effect() data class UpdateLocationModeEffect(val mode: LocationMode) : Effect() Loading Loading @@ -117,8 +118,9 @@ class DashboardFeature( is Effect.TrackersStatisticsUpdatedEffect -> state.copy( dayStatistics = effect.dayStatistics, dayLabels = effect.dayLabels, activeTrackersCount = effect.dayTrackersCount, trackersCount = effect.trackersCount leakedTrackersCount = effect.dayTrackersCount, trackersCount = effect.trackersCount, activeTrackersCount = effect.activeTrackersCount ) is Effect.TrackersBlockedUpdatedEffect -> state.copy( Loading @@ -133,7 +135,7 @@ class DashboardFeature( when (action) { Action.TogglePrivacyAction -> { getPrivacyStateUseCase.toggle() flowOf(Effect.NoEffect) flowOf(Effect.NewStatisticsAvailablesEffect) } Action.InitAction -> merge( Loading @@ -146,18 +148,6 @@ class DashboardFeature( trackersStatisticsUseCase.listenUpdates().map { Effect.NewStatisticsAvailablesEffect }, flowOf<Effect>( // trackersStatisticsUseCase.listenDayStatistics().map { trackersStatisticsUseCase.getDayStatistics().let { (dayStatistics, trackersCount) -> Effect.TrackersStatisticsUpdatedEffect( dayStatistics = dayStatistics.callsBlockedNLeaked, dayLabels = dayStatistics.periods, dayTrackersCount = dayStatistics.trackersCount, trackersCount = trackersCount ) } ), trackersStateUseCase.areAllTrackersBlocked.map { Effect.TrackersBlockedUpdatedEffect(it) }, Loading @@ -171,19 +161,21 @@ class DashboardFeature( Effect.OpenInternetActivityPrivacyEffect ) Action.ShowTrackers -> flowOf(Effect.OpenTrackersEffect) Action.FetchStatistics -> flowOf<Effect>( // trackersStatisticsUseCase.listenDayStatistics().map { trackersStatisticsUseCase.getDayStatistics().let { (dayStatistics, trackersCount) -> Action.FetchStatistics -> flow<Effect> { emit( trackersStatisticsUseCase.getDayStatistics() .let { (dayStatistics, trackersCount) -> Effect.TrackersStatisticsUpdatedEffect( dayStatistics = dayStatistics.callsBlockedNLeaked, dayLabels = dayStatistics.periods, dayTrackersCount = dayStatistics.trackersCount, trackersCount = trackersCount trackersCount = trackersCount, activeTrackersCount = trackersStatisticsUseCase.getNonBLockedTrackersCount() ) } ) } } }, singleEventProducer = { _, _, effect -> when (effect) { Loading app/src/main/java/foundation/e/privacycentralapp/features/dashboard/DashboardFragment.kt +1 −1 Original line number Diff line number Diff line Loading @@ -231,7 +231,7 @@ class DashboardFragment : binding.graphLegend.text = Html.fromHtml( getString( R.string.dashboard_graph_trackers_legend, state.activeTrackersCount?.toString() ?: "No" state.leakedTrackersCount?.toString() ?: "No" ), FROM_HTML_MODE_LEGACY ) Loading app/src/main/java/foundation/e/privacycentralapp/common/BootCompletedReceiver.kt +73 −73 File changed.Contains only whitespace changes. Show changes Loading
app/src/main/java/foundation/e/privacycentralapp/data/repositories/AppListsRepository.kt +4 −0 Original line number Diff line number Diff line Loading @@ -59,6 +59,10 @@ class AppListsRepository( return appDescriptions.value.second } fun getVisibleAndHiddenApps(): List<ApplicationDescription> { return appDescriptions.value.first + appDescriptions.value.second } fun getApplicationDescription(packageName: String): ApplicationDescription? { return appDescriptions.value.first.find { it.packageName == packageName } } Loading
app/src/main/java/foundation/e/privacycentralapp/domain/usecases/TrackersStatisticsUseCase.kt +20 −0 Original line number Diff line number Diff line Loading @@ -153,4 +153,24 @@ class TrackersStatisticsUseCase( } } } fun getNonBLockedTrackersCount(): Int { return if (blockTrackersPrivacyModule.isBlockingEnabled()) { val whiteListedTrackers = mutableSetOf<Tracker>() val whiteListedAppUids = blockTrackersPrivacyModule.getWhiteListedApp() appListsRepository.getVisibleAndHiddenApps().forEach { app -> if (app.uid in whiteListedAppUids) { whiteListedTrackers.addAll(getTrackers(app.uid)) } else { whiteListedTrackers.addAll(blockTrackersPrivacyModule.getWhiteList(app.uid)) } } whiteListedTrackers.size } else { trackTrackersPrivacyModule.getTrackersCount() } } }
app/src/main/java/foundation/e/privacycentralapp/features/dashboard/DashboardFeature.kt +22 −30 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import foundation.e.privacycentralapp.domain.usecases.IpScramblingStateUseCase import foundation.e.privacycentralapp.domain.usecases.TrackersStateUseCase import foundation.e.privacycentralapp.domain.usecases.TrackersStatisticsUseCase import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.merge Loading @@ -53,8 +54,7 @@ class DashboardFeature( val isAllTrackersBlocked: Boolean = false, val locationMode: LocationMode = LocationMode.REAL_LOCATION, val internetPrivacyMode: InternetPrivacyMode = InternetPrivacyMode.REAL_IP, val totalGraph: Int? = null, // val graphData val leakedTrackersCount: Int? = null, val trackersCount: Int? = null, val activeTrackersCount: Int? = null, val dayStatistics: List<Pair<Int, Int>>? = null, Loading Loading @@ -87,7 +87,8 @@ class DashboardFeature( val dayStatistics: List<Pair<Int, Int>>, val dayLabels: List<String>, val dayTrackersCount: Int, val trackersCount: Int val trackersCount: Int, val activeTrackersCount: Int ) : Effect() data class TrackersBlockedUpdatedEffect(val areAllTrackersBlocked: Boolean) : Effect() data class UpdateLocationModeEffect(val mode: LocationMode) : Effect() Loading Loading @@ -117,8 +118,9 @@ class DashboardFeature( is Effect.TrackersStatisticsUpdatedEffect -> state.copy( dayStatistics = effect.dayStatistics, dayLabels = effect.dayLabels, activeTrackersCount = effect.dayTrackersCount, trackersCount = effect.trackersCount leakedTrackersCount = effect.dayTrackersCount, trackersCount = effect.trackersCount, activeTrackersCount = effect.activeTrackersCount ) is Effect.TrackersBlockedUpdatedEffect -> state.copy( Loading @@ -133,7 +135,7 @@ class DashboardFeature( when (action) { Action.TogglePrivacyAction -> { getPrivacyStateUseCase.toggle() flowOf(Effect.NoEffect) flowOf(Effect.NewStatisticsAvailablesEffect) } Action.InitAction -> merge( Loading @@ -146,18 +148,6 @@ class DashboardFeature( trackersStatisticsUseCase.listenUpdates().map { Effect.NewStatisticsAvailablesEffect }, flowOf<Effect>( // trackersStatisticsUseCase.listenDayStatistics().map { trackersStatisticsUseCase.getDayStatistics().let { (dayStatistics, trackersCount) -> Effect.TrackersStatisticsUpdatedEffect( dayStatistics = dayStatistics.callsBlockedNLeaked, dayLabels = dayStatistics.periods, dayTrackersCount = dayStatistics.trackersCount, trackersCount = trackersCount ) } ), trackersStateUseCase.areAllTrackersBlocked.map { Effect.TrackersBlockedUpdatedEffect(it) }, Loading @@ -171,19 +161,21 @@ class DashboardFeature( Effect.OpenInternetActivityPrivacyEffect ) Action.ShowTrackers -> flowOf(Effect.OpenTrackersEffect) Action.FetchStatistics -> flowOf<Effect>( // trackersStatisticsUseCase.listenDayStatistics().map { trackersStatisticsUseCase.getDayStatistics().let { (dayStatistics, trackersCount) -> Action.FetchStatistics -> flow<Effect> { emit( trackersStatisticsUseCase.getDayStatistics() .let { (dayStatistics, trackersCount) -> Effect.TrackersStatisticsUpdatedEffect( dayStatistics = dayStatistics.callsBlockedNLeaked, dayLabels = dayStatistics.periods, dayTrackersCount = dayStatistics.trackersCount, trackersCount = trackersCount trackersCount = trackersCount, activeTrackersCount = trackersStatisticsUseCase.getNonBLockedTrackersCount() ) } ) } } }, singleEventProducer = { _, _, effect -> when (effect) { Loading
app/src/main/java/foundation/e/privacycentralapp/features/dashboard/DashboardFragment.kt +1 −1 Original line number Diff line number Diff line Loading @@ -231,7 +231,7 @@ class DashboardFragment : binding.graphLegend.text = Html.fromHtml( getString( R.string.dashboard_graph_trackers_legend, state.activeTrackersCount?.toString() ?: "No" state.leakedTrackersCount?.toString() ?: "No" ), FROM_HTML_MODE_LEGACY ) Loading
app/src/main/java/foundation/e/privacycentralapp/common/BootCompletedReceiver.kt +73 −73 File changed.Contains only whitespace changes. Show changes