From 084cdd720084dab2eb221d2bfeea339ff2ca9680 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Fri, 12 May 2023 09:45:02 -0400 Subject: [PATCH] Fix de-duping migration when resolving date conflicts. --- .../helpers/migration/V191_UniqueMessageMigrationV2.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/helpers/migration/V191_UniqueMessageMigrationV2.kt b/app/src/main/java/org/thoughtcrime/securesms/database/helpers/migration/V191_UniqueMessageMigrationV2.kt index b5293fd7da..6ce1951e39 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/helpers/migration/V191_UniqueMessageMigrationV2.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/helpers/migration/V191_UniqueMessageMigrationV2.kt @@ -236,7 +236,8 @@ object V191_UniqueMessageMigrationV2 : SignalDatabaseMigration { .sortedByDescending { it.id } .drop(1) .forEach { duplicate -> - while (!isDateAvailable(db, duplicate.dateSent, duplicate.fromRecipientId, duplicate.threadId)) { + while (isDateTaken(db, candidateDateSent, duplicate.fromRecipientId, duplicate.threadId)) { + Log.d(TAG, "(date=$candidateDateSent, from=${duplicate.fromRecipientId}, thread=${duplicate.threadId} not available! Decrementing.") candidateDateSent-- } @@ -252,7 +253,8 @@ object V191_UniqueMessageMigrationV2 : SignalDatabaseMigration { } } - private fun isDateAvailable(db: SQLiteDatabase, dateSent: Long, fromRecipientId: Long, threadId: Long): Boolean { + /** True if there already exists a message with the provided tuple, otherwise false. */ + private fun isDateTaken(db: SQLiteDatabase, dateSent: Long, fromRecipientId: Long, threadId: Long): Boolean { return db.rawQuery( """ SELECT EXISTS (