Improve delete sync coverage for partial expiring threads.

This commit is contained in:
Cody Henthorne
2024-06-18 11:33:04 -04:00
committed by Greyson Parrelli
parent 070174fee6
commit 6659700a1c
13 changed files with 127 additions and 51 deletions

View File

@@ -1536,8 +1536,12 @@ object SyncMessageProcessor {
continue
}
val mostRecentMessagesToDelete: List<MessageTable.SyncMessageId> = delete.mostRecentMessages.mapNotNull { it.toSyncMessageId(envelopeTimestamp) }
val latestReceivedAt = SignalDatabase.messages.getLatestReceivedAt(threadId, mostRecentMessagesToDelete)
var latestReceivedAt = SignalDatabase.messages.getLatestReceivedAt(threadId, delete.mostRecentMessages.mapNotNull { it.toSyncMessageId(envelopeTimestamp) })
if (latestReceivedAt == null && delete.mostRecentNonExpiringMessages.isNotEmpty()) {
log(envelopeTimestamp, "[handleSynchronizeDeleteForMe] Using backup non-expiring messages")
latestReceivedAt = SignalDatabase.messages.getLatestReceivedAt(threadId, delete.mostRecentNonExpiringMessages.mapNotNull { it.toSyncMessageId(envelopeTimestamp) })
}
if (latestReceivedAt != null) {
SignalDatabase.threads.trimThread(threadId = threadId, syncThreadTrimDeletes = false, trimBeforeDate = latestReceivedAt, inclusive = true)