From eeeab1f5b6f2314b408fd9d935192a4a095bcaf8 Mon Sep 17 00:00:00 2001 From: jacquarg Date: Sun, 14 Nov 2021 18:49:32 +0100 Subject: Configure for e, on sdk 29 --- .../domain/usecases/AppListUseCase.kt | 34 +++++++++++++++++++++- .../domain/usecases/FakeLocationStateUseCase.kt | 6 ++-- .../domain/usecases/IpScramblingStateUseCase.kt | 19 ++++++------ 3 files changed, 47 insertions(+), 12 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 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>(emptyList()) + private val _installedAppsUsingInternet = MutableStateFlow>(emptyList()) init { corouteineScope.launch { _appsUsingInternet.value = getAppsUsingInternetList() } } + fun getInstalledAppsUsingInternet(): Flow> { + corouteineScope.launch { + _installedAppsUsingInternet.value = getInstalledAppsUsingInternetList() + } + return _installedAppsUsingInternet + } + + private fun getInstalledAppsUsingInternetList(): List { + return permissionsModule.getInstalledApplications() + .filter { + permissionsModule.getPermissions(it.packageName) + .contains(Manifest.permission.INTERNET) + }.map { + it.icon = permissionsModule.getApplicationIcon(it.packageName) + it + }.sortedWith(object : Comparator { + 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> { corouteineScope.launch { _appsUsingInternet.value = getAppsUsingInternetList() @@ -45,7 +77,7 @@ class AppListUseCase( } private fun getAppsUsingInternetList(): List { - 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(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 { -- cgit v1.2.3