From ba0befde207b39f3a2ac5af9b2f207bb751bccc3 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Tue, 26 Oct 2021 09:10:56 -0400 Subject: [PATCH] Fix issue where delivery receipts may not update the thread summary. We were notifying in a transaction, which we can't do anymore since transactions don't block reads from other threads (meaning we could notify and someone could read it before we end the transaction, so they wouldn't see the update). --- .../org/thoughtcrime/securesms/database/MmsSmsDatabase.java | 6 +++++- .../org/thoughtcrime/securesms/database/SmsDatabase.java | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/MmsSmsDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/MmsSmsDatabase.java index da8b6d5c2b..c549e2a008 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/MmsSmsDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/MmsSmsDatabase.java @@ -469,7 +469,7 @@ public class MmsSmsDatabase extends Database { } for (ThreadUpdate update : threadUpdates) { - threadDatabase.update(update.getThreadId(), false); + threadDatabase.updateSilently(update.getThreadId(), false); } db.setTransactionSuccessful(); @@ -483,6 +483,10 @@ public class MmsSmsDatabase extends Database { notifyConversationListeners(threadUpdate.getThreadId()); } } + + if (threadUpdates.size() > 0) { + notifyConversationListListeners(); + } } return unhandled; diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/SmsDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/SmsDatabase.java index 73faa8edb8..dad9459edf 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/SmsDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/SmsDatabase.java @@ -521,7 +521,7 @@ public class SmsDatabase extends MessageDatabase { } } - if (threadUpdates.size() > 0 && receiptType == ReceiptType.DELIVERY) { + if (threadUpdates.isEmpty() && receiptType == ReceiptType.DELIVERY) { earlyDeliveryReceiptCache.increment(messageId.getTimetamp(), messageId.getRecipientId(), timestamp); }