Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5cdeb552 authored by Guillaume Jacquart's avatar Guillaume Jacquart
Browse files

5249 display whitelisted trackers count in app trackers menu subtitle.

parent 714db561
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -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 }
    }
+20 −0
Original line number Diff line number Diff line
@@ -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()
        }
    }
}
+22 −30
Original line number Diff line number Diff line
@@ -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
@@ -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,
@@ -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()
@@ -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(
@@ -133,7 +135,7 @@ class DashboardFeature(
                    when (action) {
                        Action.TogglePrivacyAction -> {
                            getPrivacyStateUseCase.toggle()
                            flowOf(Effect.NoEffect)
                            flowOf(Effect.NewStatisticsAvailablesEffect)
                        }

                        Action.InitAction -> merge(
@@ -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)
                            },
@@ -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) {
+1 −1
Original line number Diff line number Diff line
@@ -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
            )
+73 −73

File changed.

Contains only whitespace changes.