aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/foundation/e/privacycentralapp/domain
diff options
context:
space:
mode:
authorjacquarg <guillaume.jacquart@hoodbrains.com>2021-11-14 18:49:32 +0100
committerjacquarg <guillaume.jacquart@hoodbrains.com>2021-11-14 18:49:32 +0100
commiteeeab1f5b6f2314b408fd9d935192a4a095bcaf8 (patch)
tree9a48d0bc32e7a6d71fd265ce372c21a7c59b0503 /app/src/main/java/foundation/e/privacycentralapp/domain
parent187f4fdece966798dbd017d64b8f865b34dc28ed (diff)
downloadadvanced-privacy-eeeab1f5b6f2314b408fd9d935192a4a095bcaf8.tar.gz
Configure for e, on sdk 29
Diffstat (limited to 'app/src/main/java/foundation/e/privacycentralapp/domain')
-rw-r--r--app/src/main/java/foundation/e/privacycentralapp/domain/usecases/AppListUseCase.kt34
-rw-r--r--app/src/main/java/foundation/e/privacycentralapp/domain/usecases/FakeLocationStateUseCase.kt6
-rw-r--r--app/src/main/java/foundation/e/privacycentralapp/domain/usecases/IpScramblingStateUseCase.kt19
3 files changed, 47 insertions, 12 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 4d0ece2..57168c5 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
@@ -31,12 +31,44 @@ class AppListUseCase(
) {
private val _appsUsingInternet = MutableStateFlow<List<ApplicationDescription>>(emptyList())
+ private val _installedAppsUsingInternet = MutableStateFlow<List<ApplicationDescription>>(emptyList())
init {
corouteineScope.launch {
_appsUsingInternet.value = getAppsUsingInternetList()
}
}
+ fun getInstalledAppsUsingInternet(): Flow<List<ApplicationDescription>> {
+ corouteineScope.launch {
+ _installedAppsUsingInternet.value = getInstalledAppsUsingInternetList()
+ }
+ return _installedAppsUsingInternet
+ }
+
+ private fun getInstalledAppsUsingInternetList(): List<ApplicationDescription> {
+ return permissionsModule.getInstalledApplications()
+ .filter {
+ permissionsModule.getPermissions(it.packageName)
+ .contains(Manifest.permission.INTERNET)
+ }.map {
+ it.icon = permissionsModule.getApplicationIcon(it.packageName)
+ it
+ }.sortedWith(object : Comparator<ApplicationDescription> {
+ override fun compare(
+ p0: ApplicationDescription?,
+ p1: ApplicationDescription?
+ ): Int {
+ return if (p0?.icon != null && p1?.icon != null) {
+ p0.label.toString().compareTo(p1.label.toString())
+ } else if (p0?.icon == null) {
+ 1
+ } else {
+ -1
+ }
+ }
+ })
+ }
+
fun getAppsUsingInternet(): Flow<List<ApplicationDescription>> {
corouteineScope.launch {
_appsUsingInternet.value = getAppsUsingInternetList()
@@ -45,7 +77,7 @@ class AppListUseCase(
}
private fun getAppsUsingInternetList(): List<ApplicationDescription> {
- return permissionsModule.getInstalledApplications()
+ return permissionsModule.getAllApplications()
.filter {
permissionsModule.getPermissions(it.packageName)
.contains(Manifest.permission.INTERNET)
diff --git a/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/FakeLocationStateUseCase.kt b/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/FakeLocationStateUseCase.kt
index 7f288e0..5850dc4 100644
--- a/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/FakeLocationStateUseCase.kt
+++ b/app/src/main/java/foundation/e/privacycentralapp/domain/usecases/FakeLocationStateUseCase.kt
@@ -22,6 +22,7 @@ import android.content.Context
import android.location.Location
import android.location.LocationListener
import android.location.LocationManager
+import android.os.Bundle
import android.util.Log
import foundation.e.privacycentralapp.data.repositories.LocalStateRepository
import foundation.e.privacycentralapp.domain.entities.LocationMode
@@ -125,8 +126,6 @@ class FakeLocationStateUseCase(
applySettings(true, null)
}
- private var listener: LocationListener? = null
-
val currentLocation = MutableStateFlow<Location?>(null)
private var localListener = object : LocationListener {
@@ -137,6 +136,9 @@ class FakeLocationStateUseCase(
currentLocation.value = location
}
+ // Deprecated since API 29, never called.
+ override fun onStatusChanged(provider: String?, status: Int, extras: Bundle?) {}
+
override fun onProviderEnabled(provider: String?) {
Log.e("DebugLoc", "ProvuderEnabled: $provider")
reset(provider)
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 f8badcf..3caab63 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
@@ -17,11 +17,12 @@
package foundation.e.privacycentralapp.domain.usecases
-import android.content.Intent
import android.util.Log
import foundation.e.privacycentralapp.data.repositories.LocalStateRepository
import foundation.e.privacycentralapp.domain.entities.InternetPrivacyMode
import foundation.e.privacymodules.ipscramblermodule.IIpScramblerModule
+import foundation.e.privacymodules.permissions.IPermissionsPrivacyModule
+import foundation.e.privacymodules.permissions.data.ApplicationDescription
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.flow.SharingStarted
@@ -33,6 +34,8 @@ import kotlinx.coroutines.launch
class IpScramblingStateUseCase(
private val ipScramblerModule: IIpScramblerModule,
+ private val permissionsPrivacyModule: IPermissionsPrivacyModule,
+ private val appDesc: ApplicationDescription,
private val localStateRepository: LocalStateRepository,
coroutineScope: CoroutineScope
) {
@@ -70,23 +73,22 @@ class IpScramblingStateUseCase(
}
}
- fun toggle(hideIp: Boolean): Intent? {
- if (!localStateRepository.isQuickPrivacyEnabled) return null
+ fun toggle(hideIp: Boolean) {
+ if (!localStateRepository.isQuickPrivacyEnabled) return
localStateRepository.isIpScramblingEnabled = hideIp
- return applySettings(true, hideIp)
+ applySettings(true, hideIp)
}
- private fun applySettings(isQuickPrivacyEnabled: Boolean, isIpScramblingEnabled: Boolean): Intent? {
+ private fun applySettings(isQuickPrivacyEnabled: Boolean, isIpScramblingEnabled: Boolean) {
when {
isQuickPrivacyEnabled && isIpScramblingEnabled -> when (internetPrivacyMode.value) {
InternetPrivacyMode.REAL_IP, InternetPrivacyMode.REAL_IP_LOADING -> {
val intent = ipScramblerModule.prepareAndroidVpn()
if (intent != null) {
- return intent
- } else {
- ipScramblerModule.start()
+ permissionsPrivacyModule.setVpnPackageAuthorization(appDesc.packageName)
}
+ ipScramblerModule.start()
}
else -> {
Log.d("testQPFlow", "Not starting tor, already in started state")
@@ -100,7 +102,6 @@ class IpScramblingStateUseCase(
}
}
}
- return null
}
private fun map(status: IIpScramblerModule.Status): InternetPrivacyMode {