From 41c3e0f2387b8f518ee755baa7516608365880ed Mon Sep 17 00:00:00 2001 From: Jonathan Klee Date: Fri, 4 Oct 2024 08:52:11 +0200 Subject: [PATCH 1/3] Introduce a 1 day cache for Exodus --- .../java/foundation/e/apps/data/exodus/ExodusTrackerApi.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/src/main/java/foundation/e/apps/data/exodus/ExodusTrackerApi.kt b/app/src/main/java/foundation/e/apps/data/exodus/ExodusTrackerApi.kt index 9c9c35ea5..0865c3369 100644 --- a/app/src/main/java/foundation/e/apps/data/exodus/ExodusTrackerApi.kt +++ b/app/src/main/java/foundation/e/apps/data/exodus/ExodusTrackerApi.kt @@ -2,6 +2,7 @@ package foundation.e.apps.data.exodus import retrofit2.Response import retrofit2.http.GET +import retrofit2.http.Headers import retrofit2.http.Path import retrofit2.http.Query @@ -9,11 +10,14 @@ interface ExodusTrackerApi { companion object { const val BASE_URL = "https://exodus.ecloud.global/api/" + const val CACHE_DURATION_SECONDS = 86400 // 1 day } + @Headers("Cache-Control: public, max-age=$CACHE_DURATION_SECONDS") @GET("trackers") suspend fun getTrackerList(@Query("date") date: String): Response + @Headers("Cache-Control: public, max-age=$CACHE_DURATION_SECONDS") @GET("search/{appHandle}/details") suspend fun getTrackerInfoOfApp( @Path("appHandle") appHandle: String, -- GitLab From 933f45236116fdd6c504ff9d1ae09476b21ee405 Mon Sep 17 00:00:00 2001 From: Jonathan Klee Date: Fri, 4 Oct 2024 09:04:46 +0200 Subject: [PATCH 2/3] Increase cache to 30Mb The 10Mb are quicly reached actually when playing a bit with AppLounge. --- app/src/main/java/foundation/e/apps/di/CommonUtilsModule.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/foundation/e/apps/di/CommonUtilsModule.kt b/app/src/main/java/foundation/e/apps/di/CommonUtilsModule.kt index bb14ac08d..312ed0537 100644 --- a/app/src/main/java/foundation/e/apps/di/CommonUtilsModule.kt +++ b/app/src/main/java/foundation/e/apps/di/CommonUtilsModule.kt @@ -111,7 +111,7 @@ object CommonUtilsModule { @Singleton @Provides fun provideCache(@ApplicationContext context: Context): Cache { - val cacheSize = (10 * 1024 * 1024).toLong() // 10 MB + val cacheSize = (30 * 1024 * 1024).toLong() // 30 MB return Cache(context.cacheDir, cacheSize) } -- GitLab From 5db02e41a624920b353d88171311e90d7f3982c9 Mon Sep 17 00:00:00 2001 From: Jonathan Klee Date: Fri, 4 Oct 2024 09:39:01 +0200 Subject: [PATCH 3/3] Do not call our Exodus proxy for PWA apps --- .../AppPrivacyInfoRepositoryImpl.kt | 4 ++++ .../AppPrivacyInfoRepositoryImplTest.kt | 21 ++++++++++++++++--- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/foundation/e/apps/data/exodus/repositories/AppPrivacyInfoRepositoryImpl.kt b/app/src/main/java/foundation/e/apps/data/exodus/repositories/AppPrivacyInfoRepositoryImpl.kt index d3ba72548..4c9b427ef 100644 --- a/app/src/main/java/foundation/e/apps/data/exodus/repositories/AppPrivacyInfoRepositoryImpl.kt +++ b/app/src/main/java/foundation/e/apps/data/exodus/repositories/AppPrivacyInfoRepositoryImpl.kt @@ -56,6 +56,10 @@ class AppPrivacyInfoRepositoryImpl @Inject constructor( return Result.success(appInfo) } + if (application.is_pwa) { + return Result.error("No need to fetch trackers for a PWA app") + } + val appTrackerInfoResult = getResult { exodusTrackerApi.getTrackerInfoOfApp( appHandle, diff --git a/app/src/test/java/foundation/e/apps/exodus/AppPrivacyInfoRepositoryImplTest.kt b/app/src/test/java/foundation/e/apps/exodus/AppPrivacyInfoRepositoryImplTest.kt index 0658e8169..21ff0bec3 100644 --- a/app/src/test/java/foundation/e/apps/exodus/AppPrivacyInfoRepositoryImplTest.kt +++ b/app/src/test/java/foundation/e/apps/exodus/AppPrivacyInfoRepositoryImplTest.kt @@ -63,7 +63,7 @@ class AppPrivacyInfoRepositoryImplTest { name = "Demo Three", package_name = "foundation.e.demothree", latest_version_code = 123, - is_pwa = true, + is_pwa = false, ) val result = appPrivacyInfoRepository.getAppPrivacyInfo(application, application.package_name) assertEquals("getAppPrivacyInfo", true, result.isSuccess()) @@ -78,7 +78,7 @@ class AppPrivacyInfoRepositoryImplTest { name = "Demo Three", package_name = "", latest_version_code = 123, - is_pwa = true, + is_pwa = false, ) val result = appPrivacyInfoRepository.getAppPrivacyInfo(application, application.package_name) assertEquals("getAppPrivacyInfo", false, result.isSuccess()) @@ -92,10 +92,25 @@ class AppPrivacyInfoRepositoryImplTest { name = "Demo Three", package_name = "a.b.c", latest_version_code = 123, - is_pwa = true, + is_pwa = false, ) fakeTrackerDao.trackers.clear() val result = appPrivacyInfoRepository.getAppPrivacyInfo(application, application.package_name) assertEquals("getAppPrivacyInfo", 2, result.data?.trackerList?.size) } + + @Test + fun getAppPrivacyInfoWhenIsPwa() = runTest { + val application = Application( + _id = "113", + status = Status.UNAVAILABLE, + name = "Demo Three", + package_name = "a.b.c", + latest_version_code = 123, + is_pwa = true, + ) + val result = appPrivacyInfoRepository.getAppPrivacyInfo(application, application.package_name) + assertEquals(false, result.isSuccess()) + assertEquals("No need to fetch trackers for a PWA app", result.message) + } } -- GitLab