From 1e2a27f9028d7d5dd52a7797a064557d87e00842 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Mon, 16 Mar 2020 10:44:24 -0400 Subject: [PATCH] Close dangling groups cursor. --- .../securesms/util/IdentityUtil.java | 42 ++++++++++--------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/IdentityUtil.java b/app/src/main/java/org/thoughtcrime/securesms/util/IdentityUtil.java index 0313bbdc1f..973f961501 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/IdentityUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/IdentityUtil.java @@ -66,33 +66,35 @@ public class IdentityUtil { public static void markIdentityVerified(Context context, Recipient recipient, boolean verified, boolean remote) { - long time = System.currentTimeMillis(); - SmsDatabase smsDatabase = DatabaseFactory.getSmsDatabase(context); - GroupDatabase groupDatabase = DatabaseFactory.getGroupDatabase(context); - GroupDatabase.Reader reader = groupDatabase.getGroups(); + long time = System.currentTimeMillis(); + SmsDatabase smsDatabase = DatabaseFactory.getSmsDatabase(context); + GroupDatabase groupDatabase = DatabaseFactory.getGroupDatabase(context); - GroupDatabase.GroupRecord groupRecord; + try (GroupDatabase.Reader reader = groupDatabase.getGroups()) { - while ((groupRecord = reader.getNext()) != null) { - if (groupRecord.getMembers().contains(recipient.getId()) && groupRecord.isActive() && !groupRecord.isMms()) { + GroupDatabase.GroupRecord groupRecord; - if (remote) { - IncomingTextMessage incoming = new IncomingTextMessage(recipient.getId(), 1, time, null, Optional.of(groupRecord.getEncodedId()), 0, false); + while ((groupRecord = reader.getNext()) != null) { + if (groupRecord.getMembers().contains(recipient.getId()) && groupRecord.isActive() && !groupRecord.isMms()) { - if (verified) incoming = new IncomingIdentityVerifiedMessage(incoming); - else incoming = new IncomingIdentityDefaultMessage(incoming); + if (remote) { + IncomingTextMessage incoming = new IncomingTextMessage(recipient.getId(), 1, time, null, Optional.of(groupRecord.getEncodedId()), 0, false); - smsDatabase.insertMessageInbox(incoming); - } else { - RecipientId recipientId = DatabaseFactory.getRecipientDatabase(context).getOrInsertFromGroupId(groupRecord.getEncodedId()); - Recipient groupRecipient = Recipient.resolved(recipientId); - long threadId = DatabaseFactory.getThreadDatabase(context).getThreadIdFor(groupRecipient); - OutgoingTextMessage outgoing ; + if (verified) incoming = new IncomingIdentityVerifiedMessage(incoming); + else incoming = new IncomingIdentityDefaultMessage(incoming); - if (verified) outgoing = new OutgoingIdentityVerifiedMessage(recipient); - else outgoing = new OutgoingIdentityDefaultMessage(recipient); + smsDatabase.insertMessageInbox(incoming); + } else { + RecipientId recipientId = DatabaseFactory.getRecipientDatabase(context).getOrInsertFromGroupId(groupRecord.getEncodedId()); + Recipient groupRecipient = Recipient.resolved(recipientId); + long threadId = DatabaseFactory.getThreadDatabase(context).getThreadIdFor(groupRecipient); + OutgoingTextMessage outgoing ; - DatabaseFactory.getSmsDatabase(context).insertMessageOutbox(threadId, outgoing, false, time, null); + if (verified) outgoing = new OutgoingIdentityVerifiedMessage(recipient); + else outgoing = new OutgoingIdentityDefaultMessage(recipient); + + DatabaseFactory.getSmsDatabase(context).insertMessageOutbox(threadId, outgoing, false, time, null); + } } } }