aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/foundation/e/privacycentralapp/data
diff options
context:
space:
mode:
authorGuillaume Jacquart <guillaume.jacquart@hoodbrains.com>2022-03-03 07:36:58 +0000
committerGuillaume Jacquart <guillaume.jacquart@hoodbrains.com>2022-03-03 07:36:58 +0000
commit6d2cce8fa6748a1aceecd71c44296955d36fcebf (patch)
treee58b397c478d8d61cfedc541ff3361692b917883 /app/src/main/java/foundation/e/privacycentralapp/data
parent72a66e8640c21683e99e4e7d866253fe205d14f0 (diff)
parent00620b4b24482c67541106b6b4584b3ff4f383ca (diff)
downloadadvanced-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')
-rw-r--r--app/src/main/java/foundation/e/privacycentralapp/data/repositories/AppListsRepository.kt29
-rw-r--r--app/src/main/java/foundation/e/privacycentralapp/data/repositories/TrackersRepository.kt23
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?
)
}
}