diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/MmsSmsTable.java b/app/src/main/java/org/thoughtcrime/securesms/database/MmsSmsTable.java index 3ee678c14c..70af8998ad 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/MmsSmsTable.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/MmsSmsTable.java @@ -144,10 +144,8 @@ public class MmsSmsTable extends DatabaseTable { } private @NonNull Pair getGroupAddedBy(long threadId, long lastQuitChecked) { - MessageTable mmsDatabase = SignalDatabase.messages(); - MessageTable smsDatabase = SignalDatabase.messages(); - long latestQuit = mmsDatabase.getLatestGroupQuitTimestamp(threadId, lastQuitChecked); - RecipientId id = smsDatabase.getOldestGroupUpdateSender(threadId, latestQuit); + long latestQuit = SignalDatabase.messages().getLatestGroupQuitTimestamp(threadId, lastQuitChecked); + RecipientId id = SignalDatabase.messages().getOldestGroupUpdateSender(threadId, latestQuit); return new Pair<>(id, latestQuit); } @@ -189,9 +187,7 @@ public class MmsSmsTable extends DatabaseTable { public @NonNull List getMessagesAfterVoiceNoteInclusive(long messageId, long limit) throws NoSuchMessageException { MessageRecord origin = SignalDatabase.messages().getMessageRecord(messageId); List mms = SignalDatabase.messages().getMessagesInThreadAfterInclusive(origin.getThreadId(), origin.getDateReceived(), limit); - List sms = SignalDatabase.messages().getMessagesInThreadAfterInclusive(origin.getThreadId(), origin.getDateReceived(), limit); - mms.addAll(sms); Collections.sort(mms, Comparator.comparingLong(DisplayRecord::getDateReceived)); return Stream.of(mms).limit(limit).toList(); @@ -395,10 +391,7 @@ public class MmsSmsTable extends DatabaseTable { } public boolean checkMessageExists(@NonNull MessageRecord messageRecord) { - MessageTable db = messageRecord.isMms() ? SignalDatabase.messages() - : SignalDatabase.messages(); - - try (Cursor cursor = db.getMessageCursor(messageRecord.getId())) { + try (Cursor cursor = SignalDatabase.messages().getMessageCursor(messageRecord.getId())) { return cursor != null && cursor.getCount() > 0; } } @@ -460,10 +453,7 @@ public class MmsSmsTable extends DatabaseTable { } public int getSecureMessageCountForInsights() { - int count = SignalDatabase.messages().getSecureMessageCountForInsights(); - count += SignalDatabase.messages().getSecureMessageCountForInsights(); - - return count; + return SignalDatabase.messages().getSecureMessageCountForInsights(); } public boolean hasMeaningfulMessage(long threadId) { @@ -471,8 +461,7 @@ public class MmsSmsTable extends DatabaseTable { return false; } - return SignalDatabase.messages().hasMeaningfulMessage(threadId) || - SignalDatabase.messages().hasMeaningfulMessage(threadId); + return SignalDatabase.messages().hasMeaningfulMessage(threadId); } public long getThreadId(MessageId messageId) { @@ -645,12 +634,7 @@ public class MmsSmsTable extends DatabaseTable { * Doesn't do any transactions or updates, so we can re-use the method safely. */ private @NonNull Set incrementReceiptCountInternal(SyncMessageId syncMessageId, long timestamp, MessageTable.ReceiptType receiptType, @NonNull MessageTable.MessageQualifier messageQualifier) { - Set messageUpdates = new HashSet<>(); - - messageUpdates.addAll(SignalDatabase.messages().incrementReceiptCount(syncMessageId, timestamp, receiptType, messageQualifier)); - messageUpdates.addAll(SignalDatabase.messages().incrementReceiptCount(syncMessageId, timestamp, receiptType, messageQualifier)); - - return messageUpdates; + return SignalDatabase.messages().incrementReceiptCount(syncMessageId, timestamp, receiptType, messageQualifier); } public void updateViewedStories(@NonNull Set syncMessageIds) { @@ -729,29 +713,22 @@ public class MmsSmsTable extends DatabaseTable { public Collection setTimestampReadFromSyncMessage(@NonNull List readMessages, long proposedExpireStarted, @NonNull Map threadToLatestRead) { SQLiteDatabase db = getWritableDatabase(); - List> expiringText = new LinkedList<>(); - List> expiringMedia = new LinkedList<>(); - Set updatedThreads = new HashSet<>(); - Collection unhandled = new LinkedList<>(); + List> expiringMessages = new LinkedList<>(); + Set updatedThreads = new HashSet<>(); + Collection unhandled = new LinkedList<>(); db.beginTransaction(); try { for (ReadMessage readMessage : readMessages) { - RecipientId authorId = Recipient.externalPush(readMessage.getSender()).getId(); - TimestampReadResult textResult = SignalDatabase.messages().setTimestampReadFromSyncMessage(new SyncMessageId(authorId, readMessage.getTimestamp()), - proposedExpireStarted, - threadToLatestRead); - TimestampReadResult mediaResult = SignalDatabase.messages().setTimestampReadFromSyncMessage(new SyncMessageId(authorId, readMessage.getTimestamp()), - proposedExpireStarted, - threadToLatestRead); + RecipientId authorId = Recipient.externalPush(readMessage.getSender()).getId(); + TimestampReadResult result = SignalDatabase.messages().setTimestampReadFromSyncMessage(new SyncMessageId(authorId, readMessage.getTimestamp()), + proposedExpireStarted, + threadToLatestRead); - expiringText.addAll(textResult.expiring); - expiringMedia.addAll(mediaResult.expiring); + expiringMessages.addAll(result.expiring); + updatedThreads.addAll(result.threads); - updatedThreads.addAll(textResult.threads); - updatedThreads.addAll(mediaResult.threads); - - if (textResult.threads.isEmpty() && mediaResult.threads.isEmpty()) { + if (result.threads.isEmpty()) { unhandled.add(new SyncMessageId(authorId, readMessage.getTimestamp())); } } @@ -766,12 +743,7 @@ public class MmsSmsTable extends DatabaseTable { db.endTransaction(); } - for (Pair expiringMessage : expiringText) { - ApplicationDependencies.getExpiringMessageManager() - .scheduleDeletion(expiringMessage.first(), false, proposedExpireStarted, expiringMessage.second()); - } - - for (Pair expiringMessage : expiringMedia) { + for (Pair expiringMessage : expiringMessages) { ApplicationDependencies.getExpiringMessageManager() .scheduleDeletion(expiringMessage.first(), true, proposedExpireStarted, expiringMessage.second()); } @@ -817,7 +789,6 @@ public class MmsSmsTable extends DatabaseTable { boolean timestampMatches = cursor.getLong(0) == receivedTimestamp; boolean recipientIdMatches = recipientId.equals(RecipientId.from(cursor.getLong(1))); - if (timestampMatches && (recipientIdMatches || isOwnNumber)) { if (CursorUtil.requireBoolean(cursor, MmsSmsColumns.REMOTE_DELETED)) { return -1; @@ -886,9 +857,8 @@ public class MmsSmsTable extends DatabaseTable { return 0; } - public void setNotifiedTimestamp(long timestamp, @NonNull List smsIds, @NonNull List mmsIds) { - SignalDatabase.messages().setNotifiedTimestamp(timestamp, smsIds); - SignalDatabase.messages().setNotifiedTimestamp(timestamp, mmsIds); + public void setNotifiedTimestamp(long timestamp, @NonNull List messageIds) { + SignalDatabase.messages().setNotifiedTimestamp(timestamp, messageIds); } public int deleteMessagesInThreadBeforeDate(long threadId, long trimBeforeDate) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/DefaultMessageNotifier.kt b/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/DefaultMessageNotifier.kt index ab6cda0555..b274f70c18 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/DefaultMessageNotifier.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/v2/DefaultMessageNotifier.kt @@ -211,16 +211,8 @@ class DefaultMessageNotifier(context: Application) : MessageNotifier { ServiceUtil.getNotificationManager(context).cancelOrphanedNotifications(context, state, stickyThreads.map { it.value.notificationId }.toSet()) updateBadge(context, state.messageCount) - val smsIds: MutableList = mutableListOf() - val mmsIds: MutableList = mutableListOf() - for (item: NotificationItem in state.notificationItems) { - if (item.isMms) { - mmsIds.add(item.id) - } else { - smsIds.add(item.id) - } - } - SignalDatabase.mmsSms.setNotifiedTimestamp(System.currentTimeMillis(), smsIds, mmsIds) + val messageIds: List = state.notificationItems.map { it.id } + SignalDatabase.mmsSms.setNotifiedTimestamp(System.currentTimeMillis(), messageIds) Log.i(TAG, "threads: ${state.threadCount} messages: ${state.messageCount}")