From 2ea0e99f1bcec61e1a94bb7c35605fca49c53d1c Mon Sep 17 00:00:00 2001 From: jacquarg Date: Fri, 12 Nov 2021 11:34:57 +0100 Subject: Integrate trackers module, small UI fixes --- .../domain/usecases/AppListUseCase.kt | 23 ++++++++++++-- .../domain/usecases/IpScramblingStateUseCase.kt | 2 +- .../domain/usecases/TrackersStateUseCase.kt | 37 +++++++++++++++++++++- .../domain/usecases/TrackersStatisticsUseCase.kt | 8 +++++ 4 files changed, 66 insertions(+), 4 deletions(-) (limited to 'app/src/main/java/foundation/e/privacycentralapp/domain') diff --git a/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/AppListUseCase.kt b/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/AppListUseCase.kt index 8ce08a3..4d0ece2 100644 --- a/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/AppListUseCase.kt +++ b/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/AppListUseCase.kt @@ -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 { + private val _appsUsingInternet = MutableStateFlow>(emptyList()) + init { + corouteineScope.launch { + _appsUsingInternet.value = getAppsUsingInternetList() + } + } + + fun getAppsUsingInternet(): Flow> { + corouteineScope.launch { + _appsUsingInternet.value = getAppsUsingInternetList() + } + return _appsUsingInternet + } + + private fun getAppsUsingInternetList(): List { return permissionsModule.getInstalledApplications() .filter { permissionsModule.getPermissions(it.packageName) diff --git a/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/IpScramblingStateUseCase.kt b/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/IpScramblingStateUseCase.kt index 3db5674..f8badcf 100644 --- a/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/IpScramblingStateUseCase.kt +++ b/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/IpScramblingStateUseCase.kt @@ -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) diff --git a/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/TrackersStateUseCase.kt b/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/TrackersStateUseCase.kt index cabe6a1..51bdc35 100644 --- a/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/TrackersStateUseCase.kt +++ b/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/TrackersStateUseCase.kt @@ -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 = _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() } } diff --git a/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/TrackersStatisticsUseCase.kt b/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/TrackersStatisticsUseCase.kt index dc0b92b..ae820f1 100644 --- a/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/TrackersStatisticsUseCase.kt +++ b/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/TrackersStatisticsUseCase.kt @@ -42,4 +42,12 @@ class TrackersStatisticsUseCase( trackTrackersPrivacyModule.getPastYearTrackersCount() ) } + + fun getPastDayTrackersCount(): Int { + return trackTrackersPrivacyModule.getPastDayTrackersCount() + } + + fun getTrackersCount(): Int { + return trackTrackersPrivacyModule.getTrackersCount() + } } -- cgit v1.2.3