aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/foundation/e/privacycentralapp/domain
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/foundation/e/privacycentralapp/domain')
-rw-r--r--app/src/main/java/foundation/e/privacycentralapp/domain/usecases/AppListUseCase.kt23
-rw-r--r--app/src/main/java/foundation/e/privacycentralapp/domain/usecases/IpScramblingStateUseCase.kt2
-rw-r--r--app/src/main/java/foundation/e/privacycentralapp/domain/usecases/TrackersStateUseCase.kt37
-rw-r--r--app/src/main/java/foundation/e/privacycentralapp/domain/usecases/TrackersStatisticsUseCase.kt8
4 files changed, 66 insertions, 4 deletions
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<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)
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<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()
}
}
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()
+ }
}