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

Commit 2ea0e99f authored by Guillaume Jacquart's avatar Guillaume Jacquart
Browse files

Integrate trackers module, small UI fixes

parent 95f0c8fb
Loading
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
<resources>
    <string name="app_name">e - PrivacyModulesDemo</string>
    <string name="app_name">PrivacyCentral</string>
</resources>
+4 −4
Original line number Diff line number Diff line
@@ -86,19 +86,19 @@ class DependencyContainer constructor(val app: Application) {
        IpScramblingStateUseCase(ipScramblerModule, localStateRepository, GlobalScope)
    }
    private val appListUseCase by lazy {
        AppListUseCase(permissionsModule)
        AppListUseCase(permissionsModule, GlobalScope)
    }
    private val trackersStatisticsUseCase by lazy {
        TrackersStatisticsUseCase(trackersPrivacyMock)
        TrackersStatisticsUseCase(trackTrackersPrivacyModule)
    }

    private val trackersStateUseCase by lazy {
        TrackersStateUseCase(trackersPrivacyMock, trackersPrivacyMock, permissionsModule)
        TrackersStateUseCase(blockTrackersPrivacyModule, trackTrackersPrivacyModule, permissionsModule, localStateRepository, GlobalScope)
    }

    // ViewModelFactories
    val dashBoardViewModelFactory by lazy {
        DashBoardViewModelFactory(getQuickPrivacyStateUseCase, ipScramblingStateUseCase, trackersStatisticsUseCase)
        DashBoardViewModelFactory(getQuickPrivacyStateUseCase, ipScramblingStateUseCase, trackersStatisticsUseCase, trackersStateUseCase)
    }

    val fakeLocationViewModelFactory by lazy {
+21 −2
Original line number Diff line number Diff line
@@ -20,12 +20,31 @@ package foundation.e.privacycentralapp.domain.usecases
import android.Manifest
import foundation.e.privacymodules.permissions.PermissionsPrivacyModule
import foundation.e.privacymodules.permissions.data.ApplicationDescription
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.launch

class AppListUseCase(
    private val permissionsModule: PermissionsPrivacyModule
    private val permissionsModule: PermissionsPrivacyModule,
    private val corouteineScope: CoroutineScope
) {

    fun getAppsUsingInternet(): List<ApplicationDescription> {
    private val _appsUsingInternet = MutableStateFlow<List<ApplicationDescription>>(emptyList())
    init {
        corouteineScope.launch {
            _appsUsingInternet.value = getAppsUsingInternetList()
        }
    }

    fun getAppsUsingInternet(): Flow<List<ApplicationDescription>> {
        corouteineScope.launch {
            _appsUsingInternet.value = getAppsUsingInternetList()
        }
        return _appsUsingInternet
    }

    private fun getAppsUsingInternetList(): List<ApplicationDescription> {
        return permissionsModule.getInstalledApplications()
            .filter {
                permissionsModule.getPermissions(it.packageName)
+1 −1
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@ import kotlinx.coroutines.launch
class IpScramblingStateUseCase(
    private val ipScramblerModule: IIpScramblerModule,
    private val localStateRepository: LocalStateRepository,
    private val coroutineScope: CoroutineScope
    coroutineScope: CoroutineScope
) {

    // private val internetPrivacyModeMutableFlow = MutableStateFlow(InternetPrivacyMode.REAL_IP)
+36 −1
Original line number Diff line number Diff line
@@ -17,17 +17,50 @@

package foundation.e.privacycentralapp.domain.usecases

import foundation.e.privacycentralapp.data.repositories.LocalStateRepository
import foundation.e.privacymodules.permissions.PermissionsPrivacyModule
import foundation.e.privacymodules.permissions.data.ApplicationDescription
import foundation.e.privacymodules.trackers.IBlockTrackersPrivacyModule
import foundation.e.privacymodules.trackers.ITrackTrackersPrivacyModule
import foundation.e.privacymodules.trackers.Tracker
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.launch

class TrackersStateUseCase(
    private val blockTrackersPrivacyModule: IBlockTrackersPrivacyModule,
    private val trackersPrivacyModule: ITrackTrackersPrivacyModule,
    private val permissionsPrivacyModule: PermissionsPrivacyModule
    private val permissionsPrivacyModule: PermissionsPrivacyModule,
    private val localStateRepository: LocalStateRepository,
    coroutineScope: CoroutineScope
) {

    private val _areAllTrackersBlocked = MutableStateFlow(
        blockTrackersPrivacyModule.isBlockingEnabled() &&
            blockTrackersPrivacyModule.isWhiteListEmpty()
    )
    val areAllTrackersBlocked: StateFlow<Boolean> = _areAllTrackersBlocked

    init {
        coroutineScope.launch {
            localStateRepository.quickPrivacyEnabledFlow.collect { enabled ->
                if (enabled) {
                    blockTrackersPrivacyModule.enableBlocking()
                } else {
                    blockTrackersPrivacyModule.disableBlocking()
                }
                updateAllTrackersBlockedState()
            }
        }
    }

    private fun updateAllTrackersBlockedState() {
        _areAllTrackersBlocked.value = blockTrackersPrivacyModule.isBlockingEnabled() &&
            blockTrackersPrivacyModule.isWhiteListEmpty()
    }

    fun getApplicationPermission(packageName: String): ApplicationDescription {
        return permissionsPrivacyModule.getApplicationDescription(packageName)
    }
@@ -46,9 +79,11 @@ class TrackersStateUseCase(

    fun toggleAppWhitelist(appUid: Int, isWhitelisted: Boolean) {
        blockTrackersPrivacyModule.setWhiteListed(appUid, isWhitelisted)
        updateAllTrackersBlockedState()
    }

    fun blockTracker(appUid: Int, tracker: Tracker, isBlocked: Boolean) {
        blockTrackersPrivacyModule.setWhiteListed(tracker, appUid, !isBlocked)
        updateAllTrackersBlockedState()
    }
}
Loading