From 05fb1a52d27415645c0a2015ffa91d3a6f40c02d Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Thu, 26 Aug 2021 11:59:45 -0400 Subject: [PATCH] Revert some database transaction changes. --- .../securesms/database/MmsDatabase.java | 49 ++++++++----------- .../securesms/database/SmsDatabase.java | 29 +++++------ 2 files changed, 32 insertions(+), 46 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/MmsDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/MmsDatabase.java index 754280110b..3bed9f9928 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/MmsDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/MmsDatabase.java @@ -1524,42 +1524,35 @@ public class MmsDatabase extends MessageDatabase { MentionUtil.UpdatedBodyAndMentions updatedBodyAndMentions = MentionUtil.updateBodyAndMentionsWithPlaceholders(message.getBody(), message.getMentions()); - long messageId; + long messageId = insertMediaMessage(threadId, updatedBodyAndMentions.getBodyAsString(), message.getAttachments(), quoteAttachments, message.getSharedContacts(), message.getLinkPreviews(), updatedBodyAndMentions.getMentions(), contentValues, insertListener); - db.beginTransaction(); - try { - messageId = insertMediaMessage(threadId, updatedBodyAndMentions.getBodyAsString(), message.getAttachments(), quoteAttachments, message.getSharedContacts(), message.getLinkPreviews(), updatedBodyAndMentions.getMentions(), contentValues, insertListener); + if (message.getRecipient().isGroup()) { + OutgoingGroupUpdateMessage outgoingGroupUpdateMessage = (message instanceof OutgoingGroupUpdateMessage) ? (OutgoingGroupUpdateMessage) message : null; - if (message.getRecipient().isGroup()) { - OutgoingGroupUpdateMessage outgoingGroupUpdateMessage = (message instanceof OutgoingGroupUpdateMessage) ? (OutgoingGroupUpdateMessage) message : null; + GroupReceiptDatabase receiptDatabase = DatabaseFactory.getGroupReceiptDatabase(context); + Set members = new HashSet<>(); - GroupReceiptDatabase receiptDatabase = DatabaseFactory.getGroupReceiptDatabase(context); - Set members = new HashSet<>(); - - if (outgoingGroupUpdateMessage != null && outgoingGroupUpdateMessage.isV2Group()) { - MessageGroupContext.GroupV2Properties groupV2Properties = outgoingGroupUpdateMessage.requireGroupV2Properties(); - members.addAll(Stream.of(groupV2Properties.getAllActivePendingAndRemovedMembers()) - .distinct() - .map(uuid -> RecipientId.from(uuid, null)) - .toList()); - members.remove(Recipient.self().getId()); - } else { - members.addAll(Stream.of(DatabaseFactory.getGroupDatabase(context).getGroupMembers(message.getRecipient().requireGroupId(), GroupDatabase.MemberSet.FULL_MEMBERS_EXCLUDING_SELF)).map(Recipient::getId).toList()); - } - - receiptDatabase.insert(members, messageId, defaultReceiptStatus, message.getSentTimeMillis()); - - for (RecipientId recipientId : earlyDeliveryReceipts.keySet()) receiptDatabase.update(recipientId, messageId, GroupReceiptDatabase.STATUS_DELIVERED, -1); + if (outgoingGroupUpdateMessage != null && outgoingGroupUpdateMessage.isV2Group()) { + MessageGroupContext.GroupV2Properties groupV2Properties = outgoingGroupUpdateMessage.requireGroupV2Properties(); + members.addAll(Stream.of(groupV2Properties.getAllActivePendingAndRemovedMembers()) + .distinct() + .map(uuid -> RecipientId.from(uuid, null)) + .toList()); + members.remove(Recipient.self().getId()); + } else { + members.addAll(Stream.of(DatabaseFactory.getGroupDatabase(context).getGroupMembers(message.getRecipient().requireGroupId(), GroupDatabase.MemberSet.FULL_MEMBERS_EXCLUDING_SELF)).map(Recipient::getId).toList()); } - DatabaseFactory.getThreadDatabase(context).setLastSeenSilently(threadId); - DatabaseFactory.getThreadDatabase(context).setHasSentSilently(threadId, true); + receiptDatabase.insert(members, messageId, defaultReceiptStatus, message.getSentTimeMillis()); - db.setTransactionSuccessful(); - } finally { - db.endTransaction(); + for (RecipientId recipientId : earlyDeliveryReceipts.keySet()) { + receiptDatabase.update(recipientId, messageId, GroupReceiptDatabase.STATUS_DELIVERED, -1); + } } + DatabaseFactory.getThreadDatabase(context).setLastSeenSilently(threadId); + DatabaseFactory.getThreadDatabase(context).setHasSentSilently(threadId, true); + notifyConversationListeners(threadId); notifyConversationListListeners(); 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 63c7ffbb15..aeed06532e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/SmsDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/SmsDatabase.java @@ -1216,27 +1216,20 @@ public class SmsDatabase extends MessageDatabase { contentValues.put(EXPIRES_IN, message.getExpiresIn()); contentValues.put(DELIVERY_RECEIPT_COUNT, Stream.of(earlyDeliveryReceipts.values()).mapToLong(Long::longValue).sum()); - long messageId; + long messageId = db.insert(TABLE_NAME, null, contentValues); - db.beginTransaction(); - try { - messageId = db.insert(TABLE_NAME, null, contentValues); - - if (insertListener != null) { - insertListener.onComplete(); - } - - if (!message.isIdentityVerified() && !message.isIdentityDefault()) { - DatabaseFactory.getThreadDatabase(context).setLastScrolled(threadId, 0); - DatabaseFactory.getThreadDatabase(context).setLastSeenSilently(threadId); - } - - DatabaseFactory.getThreadDatabase(context).setHasSentSilently(threadId, true); - db.setTransactionSuccessful(); - } finally { - db.endTransaction(); + if (insertListener != null) { + insertListener.onComplete(); } + if (!message.isIdentityVerified() && !message.isIdentityDefault()) { + DatabaseFactory.getThreadDatabase(context).setLastScrolled(threadId, 0); + DatabaseFactory.getThreadDatabase(context).setLastSeenSilently(threadId); + } + + DatabaseFactory.getThreadDatabase(context).setHasSentSilently(threadId, true); + db.setTransactionSuccessful(); + notifyConversationListeners(threadId); if (!message.isIdentityVerified() && !message.isIdentityDefault()) {