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

Commit aefc74c2 authored by Guillaume Jacquart's avatar Guillaume Jacquart
Browse files

feat:1960(WallOfShame): remove dependences in Adapters, ifx app icons not loading on first start.

parent f4c4af89
Loading
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -146,7 +146,9 @@ val appModule = module {

    singleOf(::AppTrackersUseCase)
    singleOf(::TrackerDetailsUseCase)
    singleOf(::TrackersScreenUseCase)
    single {
        TrackersScreenUseCase(localStateRepository = get())
    }

    single<IPermissionsPrivacyModule> {
        PermissionsPrivacyModuleImpl(context = androidContext())
+6 −1
Original line number Diff line number Diff line
@@ -83,7 +83,12 @@ class DashboardFragment : NavToolbarFragment(R.layout.fragment_dashboard) {
        binding.fakeLocation.title.setText(R.string.dashboard_location_title)
        binding.ipScrambling.title.setText(R.string.dashboard_ipscrambling_title)

        tabAdapter = ShameListsTabPagerAdapter(viewModel)
        tabAdapter = ShameListsTabPagerAdapter(
            onClickShameApp = viewModel::onClickShameApp,
            onClickShameTracker = viewModel::onClickShameTracker,
            onClickViewAllApps = viewModel::onClickViewAllApps,
            onClickViewAllTrackers = viewModel::onClickViewAllTrackers
        )

        binding.listsPager.adapter = tabAdapter

+16 −13
Original line number Diff line number Diff line
@@ -32,11 +32,16 @@ import foundation.e.advancedprivacy.common.extensions.dpToPx
import foundation.e.advancedprivacy.databinding.DashboardShameListBinding
import foundation.e.advancedprivacy.databinding.TrackersItemAppBinding
import foundation.e.advancedprivacy.domain.entities.AppWithCount
import foundation.e.advancedprivacy.domain.entities.ApplicationDescription
import foundation.e.advancedprivacy.domain.entities.TrackerWithCount
import foundation.e.advancedprivacy.features.trackers.TrackerTab
import foundation.e.advancedprivacy.trackers.domain.entities.Tracker

class ShameListsTabPagerAdapter(
    private val viewModel: DashboardViewModel
    private val onClickShameApp: (ApplicationDescription) -> Unit,
    private val onClickShameTracker: (Tracker) -> Unit,
    private val onClickViewAllApps: () -> Unit,
    private val onClickViewAllTrackers: () -> Unit
) : RecyclerView.Adapter<ShameListsTabPagerAdapter.ListsTabViewHolder>() {
    private var uiState: DashboardState = DashboardState()

@@ -51,10 +56,10 @@ class ShameListsTabPagerAdapter(
        val view = DashboardShameListBinding.inflate(LayoutInflater.from(parent.context), parent, false)
        return when (viewType) {
            TrackerTab.APPS.position -> {
                ListsTabViewHolder.AppsListViewHolder(view, viewModel)
                ListsTabViewHolder.AppsListViewHolder(view, onClickShameApp, onClickViewAllApps)
            }
            else -> {
                ListsTabViewHolder.TrackersListViewHolder(view, viewModel)
                ListsTabViewHolder.TrackersListViewHolder(view, onClickShameTracker, onClickViewAllTrackers)
            }
        }
    }
@@ -94,7 +99,8 @@ class ShameListsTabPagerAdapter(

        class AppsListViewHolder(
            private val binding: DashboardShameListBinding,
            private val viewModel: DashboardViewModel
            private val onClickShameApp: (ApplicationDescription) -> Unit,
            private val onClickViewAllApps: () -> Unit
        ) : ListsTabViewHolder(binding.root) {

            private val adapter = object : BindingListAdapter<TrackersItemAppBinding, AppWithCount>() {
@@ -116,9 +122,7 @@ class ShameListsTabPagerAdapter(
                        R.string.dashboard_wall_of_shame_app_calls,
                        numberFormatter.format(item.count)
                    )
                    holder.binding.root.setOnClickListener {
                        viewModel.onClickShameApp(item.app)
                    }
                    holder.binding.root.setOnClickListener { onClickShameApp(item.app) }
                }
            }
            init {
@@ -126,7 +130,7 @@ class ShameListsTabPagerAdapter(
                binding.list.adapter = adapter
                binding.viewAll.apply {
                    text = binding.root.context.getString(R.string.dashboard_view_all_apps)
                    setOnClickListener { viewModel.onClickViewAllApps() }
                    setOnClickListener { onClickViewAllApps() }
                }
            }

@@ -137,7 +141,8 @@ class ShameListsTabPagerAdapter(

        class TrackersListViewHolder(
            private val binding: DashboardShameListBinding,
            private val viewModel: DashboardViewModel
            private val onClickShameTracker: (Tracker) -> Unit,
            private val onClickViewAllTrackers: () -> Unit
        ) : ListsTabViewHolder(binding.root) {

            private val adapter = object : BindingListAdapter<TrackersItemAppBinding, TrackerWithCount>() {
@@ -159,9 +164,7 @@ class ShameListsTabPagerAdapter(
                        R.string.dashboard_wall_of_shame_trackers_calls,
                        numberFormatter.format(item.count)
                    )
                    holder.binding.root.setOnClickListener {
                        viewModel.onClickShameTracker(item.tracker)
                    }
                    holder.binding.root.setOnClickListener { onClickShameTracker(item.tracker) }
                }
            }

@@ -170,7 +173,7 @@ class ShameListsTabPagerAdapter(
                binding.list.adapter = adapter
                binding.viewAll.apply {
                    text = binding.root.context.getString(R.string.dashboard_view_all_trackers)
                    setOnClickListener { viewModel.onClickViewAllTrackers() }
                    setOnClickListener { onClickViewAllTrackers() }
                }
            }

+18 −19
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@
 */
package foundation.e.advancedprivacy.features.trackers

import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
@@ -33,14 +32,14 @@ import foundation.e.advancedprivacy.databinding.TrackersAppsListBinding
import foundation.e.advancedprivacy.databinding.TrackersItemAppBinding
import foundation.e.advancedprivacy.databinding.TrackersListBinding
import foundation.e.advancedprivacy.domain.entities.AppWithCount
import foundation.e.advancedprivacy.domain.entities.ApplicationDescription
import foundation.e.advancedprivacy.domain.entities.TrackerWithCount

const val TAB_APPS = 0
private const val TAB_TRACKERS = 1
import foundation.e.advancedprivacy.trackers.domain.entities.Tracker

class ListsTabPagerAdapter(
    private val context: Context,
    private val viewModel: TrackersPeriodViewModel
    private val onClickTracker: (Tracker) -> Unit,
    private val onClickApp: (ApplicationDescription) -> Unit,
    private val onToggleHideNoTrackersApps: () -> Unit
) : RecyclerView.Adapter<ListsTabPagerAdapter.ListsTabViewHolder>() {
    private var uiState: TrackersPeriodState = TrackersPeriodState()

@@ -54,16 +53,17 @@ class ListsTabPagerAdapter(
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ListsTabViewHolder {
        val inflater = LayoutInflater.from(parent.context)
        return when (viewType) {
            TAB_APPS -> {
            TrackerTab.APPS.position -> {
                ListsTabViewHolder.AppsListViewHolder(
                    TrackersAppsListBinding.inflate(inflater, parent, false),
                    viewModel
                    onClickApp,
                    onToggleHideNoTrackersApps
                )
            }
            else -> {
                ListsTabViewHolder.TrackersListViewHolder(
                    TrackersListBinding.inflate(inflater, parent, false),
                    viewModel
                    onClickTracker
                )
            }
        }
@@ -75,10 +75,10 @@ class ListsTabPagerAdapter(

    override fun onBindViewHolder(holder: ListsTabViewHolder, position: Int) {
        when (position) {
            TAB_APPS -> {
            TrackerTab.APPS.position -> {
                (holder as ListsTabViewHolder.AppsListViewHolder).onBind(uiState)
            }
            TAB_TRACKERS -> {
            TrackerTab.TRACKERS.position -> {
                (holder as ListsTabViewHolder.TrackersListViewHolder).onBind(uiState.trackers ?: emptyList())
            }
        }
@@ -102,7 +102,8 @@ class ListsTabPagerAdapter(

        class AppsListViewHolder(
            private val binding: TrackersAppsListBinding,
            private val viewModel: TrackersPeriodViewModel
            private val onClickApp: (ApplicationDescription) -> Unit,
            private val onToggleHideNoTrackersApps: () -> Unit
        ) : ListsTabViewHolder(binding.root) {
            private val adapter = object : BindingListAdapter<TrackersItemAppBinding, AppWithCount>() {
                override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BindingViewHolder<TrackersItemAppBinding> {
@@ -123,7 +124,7 @@ class ListsTabPagerAdapter(
                        R.string.trackers_list_app_trackers_counts, item.count.toString()
                    )
                    holder.binding.root.setOnClickListener {
                        viewModel.onClickApp(item.app)
                        onClickApp(item.app)
                    }
                }
            }
@@ -131,7 +132,7 @@ class ListsTabPagerAdapter(
            init {
                setupRecyclerView(binding.list)
                binding.list.adapter = adapter
                binding.toggleNoTrackerApps.setOnClickListener { viewModel.onToggleHideNoTrackersApps() }
                binding.toggleNoTrackerApps.setOnClickListener { onToggleHideNoTrackersApps() }
            }

            fun onBind(uiState: TrackersPeriodState) {
@@ -151,8 +152,8 @@ class ListsTabPagerAdapter(
        }

        class TrackersListViewHolder(
            private val binding: TrackersListBinding,
            private val viewModel: TrackersPeriodViewModel
            binding: TrackersListBinding,
            private val onClickTracker: (Tracker) -> Unit
        ) : ListsTabViewHolder(binding.root) {

            private val adapter = object : BindingListAdapter<TrackersItemAppBinding, TrackerWithCount>() {
@@ -173,9 +174,7 @@ class ListsTabPagerAdapter(
                    holder.binding.counts.text = itemView.context.getString(
                        R.string.trackers_list_tracker_apps_counts, item.count.toString()
                    )
                    holder.binding.root.setOnClickListener {
                        viewModel.onClickTracker(item.tracker)
                    }
                    holder.binding.root.setOnClickListener { onClickTracker(item.tracker) }
                }
            }

+6 −2
Original line number Diff line number Diff line
@@ -79,13 +79,17 @@ class TrackersPeriodFragment : Fragment(R.layout.trackers_period_fragment) {

        graphHolder = GraphHolder(binding.graphContainer)

        tabAdapter = ListsTabPagerAdapter(requireContext(), viewModel)
        tabAdapter = ListsTabPagerAdapter(
            onClickApp = viewModel::onClickApp,
            onClickTracker = viewModel::onClickTracker,
            onToggleHideNoTrackersApps = viewModel::onToggleHideNoTrackersApps
        )
        binding.listsPager.adapter = tabAdapter

        TabLayoutMediator(binding.listsTabs, binding.listsPager) { tab, position ->
            tab.text = getString(
                when (position) {
                    TAB_APPS -> R.string.trackers_toggle_list_apps
                    TrackerTab.APPS.position -> R.string.trackers_toggle_list_apps
                    else -> R.string.trackers_toggle_list_trackers
                }
            )
Loading