Skip to content

Commit 3c39b3d

Browse files
committed
Compare etags before updating
1 parent 53c182a commit 3c39b3d

File tree

2 files changed

+11
-10
lines changed

2 files changed

+11
-10
lines changed

app/src/main/java/com/duckduckgo/app/global/db/AppDatabase.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -410,6 +410,7 @@ class MigrationsProvider(
410410
database.execSQL("DELETE FROM tds_domain_entity")
411411
database.execSQL("DELETE FROM tds_entity")
412412
database.execSQL("DELETE FROM tds_tracker")
413+
database.execSQL("DELETE FROM tdsMetadata")
413414
}
414415
}
415416

app/src/main/java/com/duckduckgo/app/trackerdetection/api/TrackerDataDownloader.kt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import com.duckduckgo.app.global.filterBlankItems
2222
import com.duckduckgo.app.global.store.BinaryDataStore
2323
import com.duckduckgo.app.trackerdetection.Client.ClientName.*
2424
import com.duckduckgo.app.trackerdetection.TrackerDataLoader
25+
import com.duckduckgo.app.trackerdetection.db.TdsMetadataDao
2526
import com.duckduckgo.app.trackerdetection.db.TdsTrackerDao
2627
import com.duckduckgo.app.trackerdetection.db.TemporaryTrackingWhitelistDao
2728
import com.duckduckgo.app.trackerdetection.model.TemporaryTrackingWhitelistedDomain
@@ -34,9 +35,9 @@ class TrackerDataDownloader @Inject constructor(
3435
private val trackerListService: TrackerListService,
3536
private val binaryDataStore: BinaryDataStore,
3637
private val trackerDataLoader: TrackerDataLoader,
37-
private val tdsTrackerDao: TdsTrackerDao,
3838
private val temporaryTrackingWhitelistDao: TemporaryTrackingWhitelistDao,
39-
private val appDatabase: AppDatabase
39+
private val appDatabase: AppDatabase,
40+
private val metadataDao: TdsMetadataDao
4041
) {
4142

4243
fun downloadTds(): Completable {
@@ -51,17 +52,16 @@ class TrackerDataDownloader @Inject constructor(
5152
if (!response.isSuccessful) {
5253
throw IOException("Status: ${response.code()} - ${response.errorBody()?.string()}")
5354
}
54-
if (response.isCached && tdsTrackerDao.count() != 0) {
55-
Timber.d("Tds data already cached and stored")
56-
return@fromAction
57-
}
5855

59-
Timber.d("Updating tds data from server")
6056
val body = response.body()!!
6157
val eTag = response.headers()["eTag"]?.removeSurrounding("W/\"", "\"").orEmpty() // removes weak eTag validator
62-
appDatabase.runInTransaction {
63-
trackerDataLoader.persistTds(eTag, body)
64-
trackerDataLoader.loadTrackers()
58+
val oldEtag = metadataDao.eTag()
59+
if (eTag != oldEtag) {
60+
Timber.d("Updating tds data from server")
61+
appDatabase.runInTransaction {
62+
trackerDataLoader.persistTds(eTag, body)
63+
trackerDataLoader.loadTrackers()
64+
}
6565
}
6666
}
6767
}

0 commit comments

Comments
 (0)