aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/foundation/e/privacycentralapp/features
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/foundation/e/privacycentralapp/features')
-rw-r--r--app/src/main/java/foundation/e/privacycentralapp/features/dashboard/DashboardFeature.kt23
-rw-r--r--app/src/main/java/foundation/e/privacycentralapp/features/dashboard/DashboardFragment.kt11
-rw-r--r--app/src/main/java/foundation/e/privacycentralapp/features/trackers/TrackersFeature.kt44
-rw-r--r--app/src/main/java/foundation/e/privacycentralapp/features/trackers/TrackersFragment.kt39
4 files changed, 52 insertions, 65 deletions
diff --git a/app/src/main/java/foundation/e/privacycentralapp/features/dashboard/DashboardFeature.kt b/app/src/main/java/foundation/e/privacycentralapp/features/dashboard/DashboardFeature.kt
index 5a37246..b434bb4 100644
--- a/app/src/main/java/foundation/e/privacycentralapp/features/dashboard/DashboardFeature.kt
+++ b/app/src/main/java/foundation/e/privacycentralapp/features/dashboard/DashboardFeature.kt
@@ -57,7 +57,8 @@ class DashboardFeature(
// val graphData
val trackersCount: Int? = null,
val activeTrackersCount: Int? = null,
- val dayStatistics: List<Int>? = null
+ val dayStatistics: List<Int>? = null,
+ val dayLabels: List<String>? = null
)
sealed class SingleEvent {
@@ -84,6 +85,7 @@ class DashboardFeature(
data class IpScramblingModeUpdatedEffect(val mode: InternetPrivacyMode) : Effect()
data class TrackersStatisticsUpdatedEffect(
val dayStatistics: List<Int>,
+ val dayLabels: List<String>,
val dayTrackersCount: Int,
val trackersCount: Int
) : Effect()
@@ -114,6 +116,7 @@ class DashboardFeature(
is Effect.IpScramblingModeUpdatedEffect -> state.copy(internetPrivacyMode = effect.mode)
is Effect.TrackersStatisticsUpdatedEffect -> state.copy(
dayStatistics = effect.dayStatistics,
+ dayLabels = effect.dayLabels,
activeTrackersCount = effect.dayTrackersCount,
trackersCount = effect.trackersCount
)
@@ -147,11 +150,12 @@ class DashboardFeature(
flowOf<Effect>(
// trackersStatisticsUseCase.listenDayStatistics().map {
trackersStatisticsUseCase.getDayStatistics().let {
- (dayStatistics, dayTrackersCount, trackersCount) ->
+ (dayStatistics, trackersCount) ->
Effect.TrackersStatisticsUpdatedEffect(
- dayStatistics,
- dayTrackersCount,
- trackersCount
+ dayStatistics = dayStatistics.calls,
+ dayLabels = dayStatistics.periods,
+ dayTrackersCount = dayStatistics.trackersCount,
+ trackersCount = trackersCount
)
}
),
@@ -171,11 +175,12 @@ class DashboardFeature(
Action.FetchStatistics -> flowOf<Effect>(
// trackersStatisticsUseCase.listenDayStatistics().map {
trackersStatisticsUseCase.getDayStatistics().let {
- (dayStatistics, dayTrackersCount, trackersCount) ->
+ (dayStatistics, trackersCount) ->
Effect.TrackersStatisticsUpdatedEffect(
- dayStatistics,
- dayTrackersCount,
- trackersCount
+ dayStatistics = dayStatistics.calls,
+ dayLabels = dayStatistics.periods,
+ dayTrackersCount = dayStatistics.trackersCount,
+ trackersCount = trackersCount
)
}
)
diff --git a/app/src/main/java/foundation/e/privacycentralapp/features/dashboard/DashboardFragment.kt b/app/src/main/java/foundation/e/privacycentralapp/features/dashboard/DashboardFragment.kt
index 441f3d6..e60243d 100644
--- a/app/src/main/java/foundation/e/privacycentralapp/features/dashboard/DashboardFragment.kt
+++ b/app/src/main/java/foundation/e/privacycentralapp/features/dashboard/DashboardFragment.kt
@@ -29,9 +29,8 @@ import foundation.e.flowmvi.MVIView
import foundation.e.privacycentralapp.DependencyContainer
import foundation.e.privacycentralapp.PrivacyCentralApplication
import foundation.e.privacycentralapp.R
+import foundation.e.privacycentralapp.common.GraphHolder
import foundation.e.privacycentralapp.common.NavToolbarFragment
-import foundation.e.privacycentralapp.common.customizeBarChart
-import foundation.e.privacycentralapp.common.updateGraphData
import foundation.e.privacycentralapp.databinding.FragmentDashboardBinding
import foundation.e.privacycentralapp.domain.entities.InternetPrivacyMode
import foundation.e.privacycentralapp.domain.entities.LocationMode
@@ -55,6 +54,7 @@ class DashboardFragment :
viewModelProviderFactoryOf { dependencyContainer.dashBoardViewModelFactory.create() }
}
+ private lateinit var graphHolder: GraphHolder
private lateinit var binding: FragmentDashboardBinding
override fun onCreate(savedInstanceState: Bundle?) {
@@ -105,7 +105,7 @@ class DashboardFragment :
super.onViewCreated(view, savedInstanceState)
binding = FragmentDashboardBinding.bind(view)
- customizeBarChart(binding.graph)
+ graphHolder = GraphHolder(binding.graph, requireContext())
binding.togglePrivacyCentral.setOnClickListener {
viewModel.submitAction(DashboardFeature.Action.TogglePrivacyAction)
@@ -205,9 +205,8 @@ class DashboardFragment :
)
)
- state.dayStatistics?.let {
- updateGraphData(it, binding.graph, getColor(requireContext(), R.color.e_blue2))
- }
+ state.dayStatistics?.let { graphHolder.data = it }
+ state.dayLabels?.let { graphHolder.labels = it }
binding.graphLegend.text = getString(R.string.dashboard_graph_trackers_legend, state.activeTrackersCount?.toString() ?: "No")
diff --git a/app/src/main/java/foundation/e/privacycentralapp/features/trackers/TrackersFeature.kt b/app/src/main/java/foundation/e/privacycentralapp/features/trackers/TrackersFeature.kt
index d061c4a..f38e50f 100644
--- a/app/src/main/java/foundation/e/privacycentralapp/features/trackers/TrackersFeature.kt
+++ b/app/src/main/java/foundation/e/privacycentralapp/features/trackers/TrackersFeature.kt
@@ -24,6 +24,7 @@ import foundation.e.flowmvi.SingleEventProducer
import foundation.e.flowmvi.feature.BaseFeature
import foundation.e.privacycentralapp.domain.usecases.AppListUseCase
import foundation.e.privacycentralapp.domain.usecases.GetQuickPrivacyStateUseCase
+import foundation.e.privacycentralapp.domain.usecases.TrackersPeriodicStatistics
import foundation.e.privacycentralapp.domain.usecases.TrackersStatisticsUseCase
import foundation.e.privacymodules.permissions.data.ApplicationDescription
import foundation.e.privacymodules.trackers.Tracker
@@ -49,16 +50,11 @@ class TrackersFeature(
singleEventProducer
) {
data class State(
- val dayStatistics: List<Int>? = null,
- val dayTrackersCount: Int? = null,
- val monthStatistics: List<Int>? = null,
- val monthTrackersCount: Int? = null,
- val yearStatistics: List<Int>? = null,
- val yearTrackersCount: Int? = null,
+ val dayStatistics: TrackersPeriodicStatistics? = null,
+ val monthStatistics: TrackersPeriodicStatistics? = null,
+ val yearStatistics: TrackersPeriodicStatistics? = null,
val apps: List<ApplicationDescription>? = null,
-
- val trackers: List<Tracker> = emptyList(),
- val currentSelectedTracker: Tracker? = null
+ val trackers: List<Tracker> = emptyList()
)
sealed class SingleEvent {
@@ -75,12 +71,9 @@ class TrackersFeature(
sealed class Effect {
data class TrackersStatisticsLoadedEffect(
- val dayStatistics: List<Int>? = null,
- val dayTrackersCount: Int? = null,
- val monthStatistics: List<Int>? = null,
- val monthTrackersCount: Int? = null,
- val yearStatistics: List<Int>? = null,
- val yearTrackersCount: Int? = null
+ val dayStatistics: TrackersPeriodicStatistics? = null,
+ val monthStatistics: TrackersPeriodicStatistics? = null,
+ val yearStatistics: TrackersPeriodicStatistics? = null
) : Effect()
data class AvailableAppsListEffect(
val apps: List<ApplicationDescription>
@@ -104,11 +97,8 @@ class TrackersFeature(
when (effect) {
is Effect.TrackersStatisticsLoadedEffect -> state.copy(
dayStatistics = effect.dayStatistics,
- dayTrackersCount = effect.dayTrackersCount,
monthStatistics = effect.monthStatistics,
- monthTrackersCount = effect.monthTrackersCount,
yearStatistics = effect.yearStatistics,
- yearTrackersCount = effect.yearTrackersCount
)
is Effect.AvailableAppsListEffect -> state.copy(apps = effect.apps)
@@ -124,12 +114,9 @@ class TrackersFeature(
.let { (day, month, year) ->
emit(
Effect.TrackersStatisticsLoadedEffect(
- dayStatistics = day.first,
- dayTrackersCount = day.second,
- monthStatistics = month.first,
- monthTrackersCount = month.second,
- yearStatistics = year.first,
- yearTrackersCount = year.second
+ dayStatistics = day,
+ monthStatistics = month,
+ yearStatistics = year
)
)
}
@@ -154,12 +141,9 @@ class TrackersFeature(
.let { (day, month, year) ->
emit(
Effect.TrackersStatisticsLoadedEffect(
- dayStatistics = day.first,
- dayTrackersCount = day.second,
- monthStatistics = month.first,
- monthTrackersCount = month.second,
- yearStatistics = year.first,
- yearTrackersCount = year.second
+ dayStatistics = day,
+ monthStatistics = month,
+ yearStatistics = year,
)
)
}
diff --git a/app/src/main/java/foundation/e/privacycentralapp/features/trackers/TrackersFragment.kt b/app/src/main/java/foundation/e/privacycentralapp/features/trackers/TrackersFragment.kt
index c017abd..088787c 100644
--- a/app/src/main/java/foundation/e/privacycentralapp/features/trackers/TrackersFragment.kt
+++ b/app/src/main/java/foundation/e/privacycentralapp/features/trackers/TrackersFragment.kt
@@ -20,7 +20,6 @@ package foundation.e.privacycentralapp.features.trackers
import android.os.Bundle
import android.view.View
import android.widget.Toast
-import androidx.core.content.ContextCompat
import androidx.fragment.app.add
import androidx.fragment.app.commit
import androidx.fragment.app.viewModels
@@ -31,11 +30,11 @@ import foundation.e.privacycentralapp.DependencyContainer
import foundation.e.privacycentralapp.PrivacyCentralApplication
import foundation.e.privacycentralapp.R
import foundation.e.privacycentralapp.common.AppsAdapter
+import foundation.e.privacycentralapp.common.GraphHolder
import foundation.e.privacycentralapp.common.NavToolbarFragment
-import foundation.e.privacycentralapp.common.customizeBarChart
-import foundation.e.privacycentralapp.common.updateGraphData
import foundation.e.privacycentralapp.databinding.FragmentTrackersBinding
import foundation.e.privacycentralapp.databinding.TrackersItemGraphBinding
+import foundation.e.privacycentralapp.domain.usecases.TrackersPeriodicStatistics
import foundation.e.privacycentralapp.extensions.viewModelProviderFactoryOf
import foundation.e.privacycentralapp.features.trackers.apptrackers.AppTrackersFragment
import kotlinx.coroutines.flow.Flow
@@ -54,6 +53,9 @@ class TrackersFragment :
}
private lateinit var binding: FragmentTrackersBinding
+ private lateinit var dayGraphHolder: GraphHolder
+ private lateinit var monthGraphHolder: GraphHolder
+ private lateinit var yearGraphHolder: GraphHolder
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -95,9 +97,9 @@ class TrackersFragment :
binding = FragmentTrackersBinding.bind(view)
- listOf(binding.graphDay, binding.graphMonth, binding.graphYear).forEach {
- customizeBarChart(it.graph)
- }
+ dayGraphHolder = GraphHolder(binding.graphDay.graph, requireContext(), false)
+ monthGraphHolder = GraphHolder(binding.graphMonth.graph, requireContext(), false)
+ yearGraphHolder = GraphHolder(binding.graphYear.graph, requireContext(), false)
binding.apps.apply {
layoutManager = LinearLayoutManager(requireContext())
@@ -118,17 +120,9 @@ class TrackersFragment :
override fun getTitle() = getString(R.string.trackers_title)
override fun render(state: TrackersFeature.State) {
- if (state.dayStatistics != null && state.dayTrackersCount != null) {
- renderGraph(state.dayTrackersCount, state.dayStatistics, binding.graphDay)
- }
-
- if (state.monthStatistics != null && state.monthTrackersCount != null) {
- renderGraph(state.monthTrackersCount, state.monthStatistics, binding.graphMonth)
- }
-
- if (state.yearStatistics != null && state.yearTrackersCount != null) {
- renderGraph(state.yearTrackersCount, state.yearStatistics, binding.graphYear)
- }
+ state.dayStatistics?.let { renderGraph(it, dayGraphHolder, binding.graphDay) }
+ state.monthStatistics?.let { renderGraph(it, monthGraphHolder, binding.graphMonth) }
+ state.yearStatistics?.let { renderGraph(it, yearGraphHolder, binding.graphYear) }
state.apps?.let {
binding.apps.post {
@@ -137,9 +131,14 @@ class TrackersFragment :
}
}
- private fun renderGraph(trackersCount: Int, data: List<Int>, graphBinding: TrackersItemGraphBinding) {
- updateGraphData(data, graphBinding.graph, ContextCompat.getColor(requireContext(), R.color.e_blue2))
- graphBinding.trackersCountLabel.text = getString(R.string.trackers_count_label, trackersCount)
+ private fun renderGraph(
+ statistics: TrackersPeriodicStatistics,
+ graphHolder: GraphHolder,
+ graphBinding: TrackersItemGraphBinding
+ ) {
+ graphHolder.data = statistics.calls
+ graphHolder.labels = statistics.periods
+ graphBinding.trackersCountLabel.text = getString(R.string.trackers_count_label, statistics.trackersCount)
}
override fun actions(): Flow<TrackersFeature.Action> = viewModel.actions