diff options
author | Guillaume Jacquart <guillaume.jacquart@hoodbrains.com> | 2022-03-03 07:36:58 +0000 |
---|---|---|
committer | Guillaume Jacquart <guillaume.jacquart@hoodbrains.com> | 2022-03-03 07:36:58 +0000 |
commit | 6d2cce8fa6748a1aceecd71c44296955d36fcebf (patch) | |
tree | e58b397c478d8d61cfedc541ff3361692b917883 /app/src/main/java/foundation/e/privacycentralapp/data | |
parent | 72a66e8640c21683e99e4e7d866253fe205d14f0 (diff) | |
parent | 00620b4b24482c67541106b6b4584b3ff4f383ca (diff) | |
download | advanced-privacy-6d2cce8fa6748a1aceecd71c44296955d36fcebf.tar.gz |
Merge branch 'auto_update_trackers' into 'main'
Update trackers list each week #4595
See merge request e/privacy-central/privacycentralapp!21
Diffstat (limited to 'app/src/main/java/foundation/e/privacycentralapp/data')
2 files changed, 24 insertions, 28 deletions
diff --git a/app/src/main/java/foundation/e/privacycentralapp/data/repositories/AppListsRepository.kt b/app/src/main/java/foundation/e/privacycentralapp/data/repositories/AppListsRepository.kt index 958a536..3573d4f 100644 --- a/app/src/main/java/foundation/e/privacycentralapp/data/repositories/AppListsRepository.kt +++ b/app/src/main/java/foundation/e/privacycentralapp/data/repositories/AppListsRepository.kt @@ -21,6 +21,7 @@ import android.Manifest import android.content.Context import android.content.Intent import android.content.pm.ApplicationInfo +import android.content.pm.PackageManager import foundation.e.privacymodules.permissions.PermissionsPrivacyModule import foundation.e.privacymodules.permissions.data.ApplicationDescription import kotlinx.coroutines.CoroutineScope @@ -40,8 +41,10 @@ class AppListsRepository( coroutineScope.launch { val (visible, hidden) = splitVisibleToHidden(getAppsUsingInternet()) appDescriptions.emit( - visible.map { it.toApplicationDescription(withIcon = true) } - to hidden.map { it.toApplicationDescription() } + Pair( + visible.map { permissionsModule.buildApplicationDescription(it, withIcon = true) }, + hidden.map { permissionsModule.buildApplicationDescription(it, withIcon = false) }, + ) ) } return appDescriptions.map { it.first.sortedBy { app -> app.label.toString().lowercase() } } @@ -61,15 +64,18 @@ class AppListsRepository( private val pm get() = context.packageManager private val appDescriptions = MutableStateFlow( - emptyList<ApplicationDescription>() to emptyList<ApplicationDescription>() + Pair( + emptyList<ApplicationDescription>(), + emptyList<ApplicationDescription>() + ) ) private fun getAppsUsingInternet(): List<ApplicationInfo> { - return pm.getInstalledApplications(0) - .filter { - permissionsModule.getPermissions(it.packageName) - .contains(Manifest.permission.INTERNET) - } + return pm.getInstalledPackages(PackageManager.GET_PERMISSIONS).filter { + it.requestedPermissions?.contains(Manifest.permission.INTERNET) == true + }.map { + it.applicationInfo + } } private fun isNotHiddenSystemApp(app: ApplicationInfo, launcherApps: List<String>): Boolean { @@ -102,11 +108,4 @@ class AppListsRepository( acc } } - - private fun ApplicationInfo.toApplicationDescription(withIcon: Boolean = true) = ApplicationDescription( - packageName = packageName, - uid = uid, - label = pm.getApplicationLabel(this), - icon = if (withIcon) pm.getApplicationIcon(packageName) else null - ) } diff --git a/app/src/main/java/foundation/e/privacycentralapp/data/repositories/TrackersRepository.kt b/app/src/main/java/foundation/e/privacycentralapp/data/repositories/TrackersRepository.kt index c7efa84..8216a19 100644 --- a/app/src/main/java/foundation/e/privacycentralapp/data/repositories/TrackersRepository.kt +++ b/app/src/main/java/foundation/e/privacycentralapp/data/repositories/TrackersRepository.kt @@ -20,13 +20,11 @@ package foundation.e.privacycentralapp.data.repositories import android.content.Context import android.util.Log import com.google.gson.Gson -import com.google.gson.annotations.SerializedName import foundation.e.privacymodules.trackers.Tracker import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory import retrofit2.http.GET import java.io.InputStreamReader -import java.lang.Exception class TrackersRepository(private val context: Context) { @@ -37,6 +35,12 @@ class TrackersRepository(private val context: Context) { initFromAssets() } + suspend fun update() { + val api = ETrackersApi.build() + val response = api.trackers() + trackers = mapper(response) + } + private fun initFromAssets() { try { val reader = InputStreamReader(context.getAssets().open("e_trackers.json"), "UTF-8") @@ -65,8 +69,7 @@ class TrackersRepository(private val context: Context) { id = id!!, hostnames = hostnames!!.toSet(), label = name!!, - description = description, - website = website, + exodusId = exodusId ) } } @@ -75,14 +78,14 @@ interface ETrackersApi { companion object { fun build(): ETrackersApi { val retrofit = Retrofit.Builder() - .baseUrl("TODO") + .baseUrl("https://gitlab.e.foundation/e/apps/tracker-list/-/raw/main/") .addConverterFactory(GsonConverterFactory.create()) .build() return retrofit.create(ETrackersApi::class.java) } } - @GET("TODO") + @GET("list/e_trackers.json") suspend fun trackers(): ETrackersResponse data class ETrackersResponse(val trackers: List<ETracker>) { @@ -90,13 +93,7 @@ interface ETrackersApi { val id: String?, val hostnames: List<String>?, val name: String?, - - val description: String?, - @SerializedName("creation_date") val creationDate: String?, - @SerializedName("code_signature") val codeSignature: String?, - @SerializedName("network_signature") val networkSignature: String?, - val website: String?, - val categories: List<String>?, + val exodusId: String? ) } } |