diff --git a/app-tracking-protection/vpn-impl/src/main/java/com/duckduckgo/mobile/android/vpn/blocklist/AppTrackerListUpdateWorker.kt b/app-tracking-protection/vpn-impl/src/main/java/com/duckduckgo/mobile/android/vpn/blocklist/AppTrackerListUpdateWorker.kt index 4837ec8da582..2681494f21e5 100644 --- a/app-tracking-protection/vpn-impl/src/main/java/com/duckduckgo/mobile/android/vpn/blocklist/AppTrackerListUpdateWorker.kt +++ b/app-tracking-protection/vpn-impl/src/main/java/com/duckduckgo/mobile/android/vpn/blocklist/AppTrackerListUpdateWorker.kt @@ -73,12 +73,7 @@ class AppTrackerListUpdateWorker(context: Context, workerParameters: WorkerParam vpnDatabase.vpnAppTrackerBlockingDao().getTrackerBlocklistMetadata()?.eTag val updatedEtag = blocklist.etag.value - if (updatedEtag == currentEtag) { - logcat { "Downloaded blocklist has same eTag, noop" } - return Result.success() - } - - logcat { "Updating the app tracker blocklist, eTag: ${blocklist.etag.value}" } + logcat { "Updating the app tracker blocklist, previous/new eTag: $currentEtag / $updatedEtag}" } vpnDatabase .vpnAppTrackerBlockingDao() diff --git a/app-tracking-protection/vpn-impl/src/main/java/com/duckduckgo/mobile/android/vpn/feature/settings/ExceptionListsSettingStore.kt b/app-tracking-protection/vpn-impl/src/main/java/com/duckduckgo/mobile/android/vpn/feature/settings/ExceptionListsSettingStore.kt index 25c6634740ff..c2fa75ff88a9 100644 --- a/app-tracking-protection/vpn-impl/src/main/java/com/duckduckgo/mobile/android/vpn/feature/settings/ExceptionListsSettingStore.kt +++ b/app-tracking-protection/vpn-impl/src/main/java/com/duckduckgo/mobile/android/vpn/feature/settings/ExceptionListsSettingStore.kt @@ -50,9 +50,7 @@ class ExceptionListsSettingStore @Inject constructor( override fun store(jsonString: String) { logcat { "Received configuration: $jsonString" } runCatching { - jsonAdapter.fromJson(jsonString)?.let { model -> - - val exceptionLists = model.exceptionLists + jsonAdapter.fromJson(jsonString)?.exceptionLists?.let { exceptionLists -> val appTrackerExceptionRuleList = exceptionLists.appTrackerAllowList.map { appTrackerAllowRule -> AppTrackerExceptionRule( @@ -78,7 +76,7 @@ class ExceptionListsSettingStore @Inject constructor( } private data class JsonConfigModel( - val exceptionLists: JsonExceptionListsModel, + val exceptionLists: JsonExceptionListsModel?, ) private data class JsonExceptionListsModel( diff --git a/app-tracking-protection/vpn-impl/src/test/java/com/duckduckgo/mobile/android/vpn/feature/settings/ExceptionListsSettingStoreTest.kt b/app-tracking-protection/vpn-impl/src/test/java/com/duckduckgo/mobile/android/vpn/feature/settings/ExceptionListsSettingStoreTest.kt index 448b36495f15..2dfd11992479 100644 --- a/app-tracking-protection/vpn-impl/src/test/java/com/duckduckgo/mobile/android/vpn/feature/settings/ExceptionListsSettingStoreTest.kt +++ b/app-tracking-protection/vpn-impl/src/test/java/com/duckduckgo/mobile/android/vpn/feature/settings/ExceptionListsSettingStoreTest.kt @@ -96,6 +96,12 @@ class ExceptionListsSettingStoreTest { @Test fun whenEmptyJsonStoreNothing() { + exceptionListsSettingStore.store("{}") + verifyNoInteractions(mockVpnDatabase) + } + + @Test + fun whenInvalidJsonStoreNothingAndDoNotCrash() { exceptionListsSettingStore.store("") verifyNoInteractions(mockVpnDatabase) } diff --git a/app-tracking-protection/vpn-store/src/main/java/com/duckduckgo/mobile/android/vpn/dao/VpnAppTrackerBlockingDao.kt b/app-tracking-protection/vpn-store/src/main/java/com/duckduckgo/mobile/android/vpn/dao/VpnAppTrackerBlockingDao.kt index 3a7ff3ea0f52..02e3f244f48c 100644 --- a/app-tracking-protection/vpn-store/src/main/java/com/duckduckgo/mobile/android/vpn/dao/VpnAppTrackerBlockingDao.kt +++ b/app-tracking-protection/vpn-store/src/main/java/com/duckduckgo/mobile/android/vpn/dao/VpnAppTrackerBlockingDao.kt @@ -38,6 +38,9 @@ interface VpnAppTrackerBlockingDao { @Insert fun setTrackerBlocklistMetadata(appTrackerMetadata: AppTrackerMetadata) + @Query("DELETE from vpn_app_tracker_blocking_list_metadata") + fun deleteTrackerBlocklistMetadata() + @Query("DELETE from vpn_app_tracker_blocking_list") fun deleteTrackerBlockList() @@ -63,6 +66,7 @@ interface VpnAppTrackerBlockingDao { metadata: AppTrackerMetadata, entities: List, ) { + deleteTrackerBlocklistMetadata() setTrackerBlocklistMetadata(metadata) deleteTrackerBlockList()