From 617369dbc03fa12cbaaaf2ff82cfc68199fda81b Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Wed, 25 Oct 2023 10:23:48 -0700 Subject: [PATCH] Make type a mandatory param on IncomingMessage. --- .../conversation/ConversationItemPreviewer.kt | 3 +++ .../securesms/database/MmsTableTest_stories.kt | 7 +++++++ .../RecipientTableTest_getAndPossiblyMerge.kt | 2 ++ ...Test_collapseJoinRequestEventsIfPossible.kt | 1 + .../securesms/database/MessageTable.kt | 4 ++-- .../securesms/messages/DataMessageProcessor.kt | 15 +++++++++------ .../securesms/messages/EditMessageProcessor.kt | 6 ++++-- .../messages/MessageContentProcessor.kt | 2 ++ .../messages/StoryMessageProcessor.kt | 2 ++ .../securesms/mms/IncomingMessage.kt | 18 ++++++++---------- .../securesms/releasechannel/ReleaseChannel.kt | 2 ++ .../thoughtcrime/securesms/database/TestSms.kt | 1 + 12 files changed, 43 insertions(+), 20 deletions(-) diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/conversation/ConversationItemPreviewer.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/conversation/ConversationItemPreviewer.kt index 6343515836..16f6ca75af 100644 --- a/app/src/androidTest/java/org/thoughtcrime/securesms/conversation/ConversationItemPreviewer.kt +++ b/app/src/androidTest/java/org/thoughtcrime/securesms/conversation/ConversationItemPreviewer.kt @@ -9,6 +9,7 @@ import org.junit.runner.RunWith import org.signal.core.util.ThreadUtil import org.thoughtcrime.securesms.attachments.PointerAttachment import org.thoughtcrime.securesms.conversation.v2.ConversationActivity +import org.thoughtcrime.securesms.database.MessageType import org.thoughtcrime.securesms.database.SignalDatabase import org.thoughtcrime.securesms.mms.IncomingMessage import org.thoughtcrime.securesms.mms.OutgoingMessage @@ -65,6 +66,7 @@ class ConversationItemPreviewer { } val message = IncomingMessage( + type = MessageType.NORMAL, from = other.id, body = body, sentTimeMillis = System.currentTimeMillis(), @@ -84,6 +86,7 @@ class ConversationItemPreviewer { } val message = IncomingMessage( + type = MessageType.NORMAL, from = other.id, body = body, sentTimeMillis = System.currentTimeMillis(), diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/database/MmsTableTest_stories.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/database/MmsTableTest_stories.kt index 6209ef891a..792aa96b14 100644 --- a/app/src/androidTest/java/org/thoughtcrime/securesms/database/MmsTableTest_stories.kt +++ b/app/src/androidTest/java/org/thoughtcrime/securesms/database/MmsTableTest_stories.kt @@ -74,6 +74,7 @@ class MmsTableTest_stories { MmsHelper.insert( IncomingMessage( + type = MessageType.NORMAL, from = sender, sentTimeMillis = 2, serverTimeMillis = 2, @@ -96,6 +97,7 @@ class MmsTableTest_stories { val sender = recipients[0] val messageId = MmsHelper.insert( IncomingMessage( + type = MessageType.NORMAL, from = sender, sentTimeMillis = 2, serverTimeMillis = 2, @@ -123,6 +125,7 @@ class MmsTableTest_stories { val messageIds = recipients.take(5).map { MmsHelper.insert( IncomingMessage( + type = MessageType.NORMAL, from = it, sentTimeMillis = 2, serverTimeMillis = 2, @@ -155,6 +158,7 @@ class MmsTableTest_stories { Thread.sleep(5) MmsHelper.insert( IncomingMessage( + type = MessageType.NORMAL, from = recipients[it], sentTimeMillis = System.currentTimeMillis(), serverTimeMillis = 2, @@ -169,6 +173,7 @@ class MmsTableTest_stories { Thread.sleep(5) MmsHelper.insert( IncomingMessage( + type = MessageType.NORMAL, from = recipients[it], sentTimeMillis = System.currentTimeMillis(), serverTimeMillis = 2, @@ -214,6 +219,7 @@ class MmsTableTest_stories { // GIVEN MmsHelper.insert( IncomingMessage( + type = MessageType.NORMAL, from = recipients[0], sentTimeMillis = 200, serverTimeMillis = 2, @@ -322,6 +328,7 @@ class MmsTableTest_stories { MmsHelper.insert( IncomingMessage( + type = MessageType.NORMAL, from = myStory.id, sentTimeMillis = 201, serverTimeMillis = 201, diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/database/RecipientTableTest_getAndPossiblyMerge.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/database/RecipientTableTest_getAndPossiblyMerge.kt index fef38a95e5..dbf277b89a 100644 --- a/app/src/androidTest/java/org/thoughtcrime/securesms/database/RecipientTableTest_getAndPossiblyMerge.kt +++ b/app/src/androidTest/java/org/thoughtcrime/securesms/database/RecipientTableTest_getAndPossiblyMerge.kt @@ -949,6 +949,7 @@ class RecipientTableTest_getAndPossiblyMerge { private fun smsMessage(sender: RecipientId, time: Long = 0, body: String = "", groupId: Optional = Optional.empty()): IncomingMessage { return IncomingMessage( + type = MessageType.NORMAL, from = sender, sentTimeMillis = time, serverTimeMillis = time, @@ -961,6 +962,7 @@ class RecipientTableTest_getAndPossiblyMerge { private fun mmsMessage(sender: RecipientId, time: Long = 0, body: String = "", groupId: Optional = Optional.empty()): IncomingMessage { return IncomingMessage( + type = MessageType.NORMAL, from = sender, groupId = groupId.orNull(), body = body, diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/database/SmsDatabaseTest_collapseJoinRequestEventsIfPossible.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/database/SmsDatabaseTest_collapseJoinRequestEventsIfPossible.kt index 14da9e5314..6ea77484b5 100644 --- a/app/src/androidTest/java/org/thoughtcrime/securesms/database/SmsDatabaseTest_collapseJoinRequestEventsIfPossible.kt +++ b/app/src/androidTest/java/org/thoughtcrime/securesms/database/SmsDatabaseTest_collapseJoinRequestEventsIfPossible.kt @@ -273,6 +273,7 @@ class SmsDatabaseTest_collapseJoinRequestEventsIfPossible { private fun smsMessage(sender: RecipientId, body: String? = ""): IncomingMessage { wallClock++ return IncomingMessage( + type = MessageType.NORMAL, from = sender, sentTimeMillis = wallClock, serverTimeMillis = wallClock, diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt index 7449119a6a..9689a38595 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt @@ -2449,7 +2449,7 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat retrieved.type == MessageType.IDENTITY_VERIFIED || retrieved.type == MessageType.IDENTITY_UPDATE - val read = silent || retrieved.isExpirationUpdate + val read = silent || retrieved.type == MessageType.EXPIRATION_UPDATE val contentValues = contentValuesOf( DATE_SENT to retrieved.sentTimeMillis, @@ -2460,7 +2460,7 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat MMS_MESSAGE_TYPE to PduHeaders.MESSAGE_TYPE_RETRIEVE_CONF, THREAD_ID to threadId, MMS_STATUS to MmsStatus.DOWNLOAD_INITIALIZED, - DATE_RECEIVED to if (retrieved.isPushMessage) retrieved.receivedTimeMillis else generatePduCompatTimestamp(retrieved.receivedTimeMillis), + DATE_RECEIVED to retrieved.receivedTimeMillis, SMS_SUBSCRIPTION_ID to retrieved.subscriptionId, EXPIRES_IN to retrieved.expiresIn, VIEW_ONCE to if (retrieved.isViewOnce) 1 else 0, diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/DataMessageProcessor.kt b/app/src/main/java/org/thoughtcrime/securesms/messages/DataMessageProcessor.kt index 2ce7f04196..01700a387d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/DataMessageProcessor.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/DataMessageProcessor.kt @@ -313,15 +313,14 @@ object DataMessageProcessor { try { val mediaMessage = IncomingMessage( + type = MessageType.EXPIRATION_UPDATE, from = senderRecipientId, sentTimeMillis = envelope.timestamp!! - if (sideEffect) 1 else 0, serverTimeMillis = envelope.serverTimestamp!!, receivedTimeMillis = receivedTime, expiresIn = expiresIn.inWholeMilliseconds, - isExpirationUpdate = true, isUnidentified = metadata.sealedSender, - serverGuid = envelope.serverGuid, - isPushMessage = true + serverGuid = envelope.serverGuid ) val insertResult: InsertResult? = SignalDatabase.messages.insertMessageInbox(mediaMessage, -1).orNull() @@ -413,6 +412,7 @@ object DataMessageProcessor { } val mediaMessage = IncomingMessage( + type = MessageType.NORMAL, from = senderRecipientId, sentTimeMillis = envelope.timestamp!!, serverTimeMillis = envelope.serverTimestamp!!, @@ -642,7 +642,6 @@ object DataMessageProcessor { expiresIn = message.expireTimerDuration.inWholeMilliseconds, isUnidentified = metadata.sealedSender, serverGuid = envelope.serverGuid, - isPushMessage = true, type = MessageType.PAYMENTS_NOTIFICATION ) @@ -746,6 +745,7 @@ object DataMessageProcessor { val bodyRanges: BodyRangeList? = message.bodyRanges.filter { it.mentionAci == null }.toList().toBodyRangeList() val mediaMessage = IncomingMessage( + type = MessageType.NORMAL, from = senderRecipient.id, sentTimeMillis = envelope.timestamp!!, serverTimeMillis = envelope.serverTimestamp!!, @@ -814,6 +814,7 @@ object DataMessageProcessor { val insertResult: InsertResult? = try { val mediaMessage = IncomingMessage( + type = MessageType.NORMAL, from = senderRecipient.id, sentTimeMillis = envelope.timestamp!!, serverTimeMillis = envelope.serverTimestamp!!, @@ -870,6 +871,7 @@ object DataMessageProcessor { handlePossibleExpirationUpdate(envelope, metadata, senderRecipient.id, threadRecipient, groupId, message.expireTimerDuration, receivedTime) val mediaMessage = IncomingMessage( + type = MessageType.NORMAL, from = senderRecipient.id, sentTimeMillis = envelope.timestamp!!, serverTimeMillis = envelope.serverTimestamp!!, @@ -885,8 +887,7 @@ object DataMessageProcessor { linkPreviews = linkPreviews, mentions = mentions, serverGuid = envelope.serverGuid, - messageRanges = messageRanges, - isPushMessage = true + messageRanges = messageRanges ) insertResult = SignalDatabase.messages.insertMessageInbox(mediaMessage, -1).orNull() @@ -952,6 +953,7 @@ object DataMessageProcessor { notifyTypingStoppedFromIncomingMessage(context, senderRecipient, threadRecipient.id, metadata.sourceDeviceId) val textMessage = IncomingMessage( + type = MessageType.NORMAL, from = senderRecipient.id, sentTimeMillis = envelope.timestamp!!, serverTimeMillis = envelope.serverTimestamp!!, @@ -1027,6 +1029,7 @@ object DataMessageProcessor { private fun insertPlaceholder(sender: RecipientId, timestamp: Long, groupId: GroupId?): InsertResult? { val textMessage = IncomingMessage( + type = MessageType.NORMAL, from = sender, sentTimeMillis = timestamp, serverTimeMillis = -1, diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/EditMessageProcessor.kt b/app/src/main/java/org/thoughtcrime/securesms/messages/EditMessageProcessor.kt index e99d0742b7..492a6165be 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/EditMessageProcessor.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/EditMessageProcessor.kt @@ -4,6 +4,7 @@ import android.content.Context import org.signal.core.util.concurrent.SignalExecutors import org.signal.core.util.orNull import org.thoughtcrime.securesms.database.MessageTable.InsertResult +import org.thoughtcrime.securesms.database.MessageType import org.thoughtcrime.securesms.database.SignalDatabase import org.thoughtcrime.securesms.database.model.MediaMmsMessageRecord import org.thoughtcrime.securesms.database.model.MessageId @@ -140,6 +141,7 @@ object EditMessageProcessor { MediaUtil.SlideType.LONG_TEXT == MediaUtil.getSlideTypeFromContentType(it.contentType) } val mediaMessage = IncomingMessage( + type = MessageType.NORMAL, from = senderRecipientId, sentTimeMillis = message.timestamp!!, serverTimeMillis = envelope.serverTimestamp!!, @@ -155,8 +157,7 @@ object EditMessageProcessor { linkPreviews = DataMessageProcessor.getLinkPreviews(message.preview, message.body ?: "", false), mentions = DataMessageProcessor.getMentions(message.bodyRanges), serverGuid = envelope.serverGuid, - messageRanges = messageRanges, - isPushMessage = true + messageRanges = messageRanges ) val insertResult = SignalDatabase.messages.insertEditMessageInbox(mediaMessage, targetMessage).orNull() @@ -180,6 +181,7 @@ object EditMessageProcessor { targetMessage: MediaMmsMessageRecord ): InsertResult? { val textMessage = IncomingMessage( + type = MessageType.NORMAL, from = senderRecipientId, sentTimeMillis = envelope.timestamp!!, serverTimeMillis = envelope.timestamp!!, diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/MessageContentProcessor.kt b/app/src/main/java/org/thoughtcrime/securesms/messages/MessageContentProcessor.kt index 514d3bb710..3a02137865 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/MessageContentProcessor.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/MessageContentProcessor.kt @@ -8,6 +8,7 @@ import org.signal.libsignal.protocol.SignalProtocolAddress import org.signal.libsignal.protocol.ecc.ECPublicKey import org.signal.libsignal.protocol.message.DecryptionErrorMessage import org.signal.libsignal.zkgroup.groups.GroupSecretParams +import org.thoughtcrime.securesms.database.MessageType import org.thoughtcrime.securesms.database.SignalDatabase import org.thoughtcrime.securesms.database.model.GroupRecord import org.thoughtcrime.securesms.database.model.MessageLogEntry @@ -296,6 +297,7 @@ open class MessageContentProcessor(private val context: Context) { private fun insertErrorMessage(context: Context, sender: Recipient, timestamp: Long, groupId: Optional, marker: (Long) -> Unit) { val textMessage = IncomingMessage( + type = MessageType.NORMAL, from = sender.id, sentTimeMillis = timestamp, serverTimeMillis = -1, diff --git a/app/src/main/java/org/thoughtcrime/securesms/messages/StoryMessageProcessor.kt b/app/src/main/java/org/thoughtcrime/securesms/messages/StoryMessageProcessor.kt index 9b62943485..2d85a3cc2f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messages/StoryMessageProcessor.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/messages/StoryMessageProcessor.kt @@ -4,6 +4,7 @@ import android.graphics.Color import org.signal.core.util.Base64 import org.signal.core.util.orNull import org.thoughtcrime.securesms.database.MessageTable.InsertResult +import org.thoughtcrime.securesms.database.MessageType import org.thoughtcrime.securesms.database.SignalDatabase import org.thoughtcrime.securesms.database.model.StoryType import org.thoughtcrime.securesms.database.model.databaseprotos.ChatColor @@ -59,6 +60,7 @@ object StoryMessageProcessor { } val mediaMessage = IncomingMessage( + type = MessageType.NORMAL, from = senderRecipient.id, sentTimeMillis = envelope.timestamp!!, serverTimeMillis = envelope.serverTimestamp!!, diff --git a/app/src/main/java/org/thoughtcrime/securesms/mms/IncomingMessage.kt b/app/src/main/java/org/thoughtcrime/securesms/mms/IncomingMessage.kt index 3af8216173..234ff38a4c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mms/IncomingMessage.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mms/IncomingMessage.kt @@ -14,20 +14,19 @@ import org.thoughtcrime.securesms.linkpreview.LinkPreview import org.thoughtcrime.securesms.recipients.RecipientId class IncomingMessage( + val type: MessageType, val from: RecipientId, - val groupId: GroupId? = null, - val groupContext: MessageGroupContext? = null, - val body: String? = null, - val isPushMessage: Boolean = false, - val storyType: StoryType = StoryType.NONE, - val parentStoryId: ParentStoryId? = null, - val isStoryReaction: Boolean = false, val sentTimeMillis: Long, val serverTimeMillis: Long, val receivedTimeMillis: Long, + val groupId: GroupId? = null, + val groupContext: MessageGroupContext? = null, + val body: String? = null, + val storyType: StoryType = StoryType.NONE, + val parentStoryId: ParentStoryId? = null, + val isStoryReaction: Boolean = false, val subscriptionId: Int = -1, val expiresIn: Long = 0, - val isExpirationUpdate: Boolean = false, val quote: QuoteModel? = null, val isUnidentified: Boolean = false, val isViewOnce: Boolean = false, @@ -37,8 +36,7 @@ class IncomingMessage( sharedContacts: List = emptyList(), linkPreviews: List = emptyList(), mentions: List = emptyList(), - val giftBadge: GiftBadge? = null, - val type: MessageType = MessageType.NORMAL + val giftBadge: GiftBadge? = null ) { val attachments: List = ArrayList(attachments) diff --git a/app/src/main/java/org/thoughtcrime/securesms/releasechannel/ReleaseChannel.kt b/app/src/main/java/org/thoughtcrime/securesms/releasechannel/ReleaseChannel.kt index 2508a48feb..14ae56500c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/releasechannel/ReleaseChannel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/releasechannel/ReleaseChannel.kt @@ -2,6 +2,7 @@ package org.thoughtcrime.securesms.releasechannel import org.thoughtcrime.securesms.attachments.PointerAttachment import org.thoughtcrime.securesms.database.MessageTable +import org.thoughtcrime.securesms.database.MessageType import org.thoughtcrime.securesms.database.SignalDatabase import org.thoughtcrime.securesms.database.model.StoryType import org.thoughtcrime.securesms.database.model.databaseprotos.BodyRangeList @@ -61,6 +62,7 @@ object ReleaseChannel { } val message = IncomingMessage( + type = MessageType.NORMAL, from = recipientId, sentTimeMillis = System.currentTimeMillis(), serverTimeMillis = System.currentTimeMillis(), diff --git a/app/src/test/java/org/thoughtcrime/securesms/database/TestSms.kt b/app/src/test/java/org/thoughtcrime/securesms/database/TestSms.kt index cc4d8fe6a0..9abf6a62f3 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/database/TestSms.kt +++ b/app/src/test/java/org/thoughtcrime/securesms/database/TestSms.kt @@ -31,6 +31,7 @@ object TestSms { threadId: Long = 1 ): Long { val message = IncomingMessage( + type = MessageType.NORMAL, from = sender, sentTimeMillis = sentTimestampMillis, serverTimeMillis = serverTimestampMillis,