Update shouldIngore for edit and decryption error messages.

This commit is contained in:
Greyson Parrelli
2026-06-09 17:21:48 -04:00
committed by Cody Henthorne
parent 6210d1b397
commit 5041057bab
@@ -53,6 +53,7 @@ import org.whispersystems.signalservice.api.push.DistributionId
import org.whispersystems.signalservice.api.push.SignalServiceAddress
import org.whispersystems.signalservice.internal.push.CallMessage
import org.whispersystems.signalservice.internal.push.Content
import org.whispersystems.signalservice.internal.push.DataMessage
import org.whispersystems.signalservice.internal.push.Envelope
import org.whispersystems.signalservice.internal.push.GroupContextV2
import org.whispersystems.signalservice.internal.push.TypingMessage
@@ -148,25 +149,16 @@ open class MessageContentProcessor(private val context: Context) {
@Throws(BadGroupIdException::class)
private fun shouldIgnore(content: Content, senderRecipient: Recipient, threadRecipient: Recipient): Boolean {
if (content.dataMessage != null) {
val message = content.dataMessage!!
return if (threadRecipient.isGroup && threadRecipient.isBlocked) {
true
} else if (threadRecipient.isGroup) {
if (threadRecipient.isUnknownGroup) {
return senderRecipient.isBlocked
}
val isTextMessage = message.body != null
val isMediaMessage = message.isMediaMessage
val isExpireMessage = message.isExpirationUpdate
val isGv2Update = message.hasSignedGroupChange
val isContentMessage = !isGv2Update && !isExpireMessage && (isTextMessage || isMediaMessage)
val isGroupActive = threadRecipient.isActiveGroup
isContentMessage && !isGroupActive || senderRecipient.isBlocked && !isGv2Update
return shouldIgnoreDataMessage(content.dataMessage!!, senderRecipient, threadRecipient)
} else if (content.editMessage != null) {
val editDataMessage = content.editMessage!!.dataMessage
return if (editDataMessage != null) {
shouldIgnoreDataMessage(editDataMessage, senderRecipient, threadRecipient)
} else {
senderRecipient.isBlocked
}
} else if (content.decryptionErrorMessage != null) {
return senderRecipient.isBlocked
} else if (content.callMessage != null) {
return senderRecipient.isBlocked
} else if (content.typingMessage != null) {
@@ -194,6 +186,27 @@ open class MessageContentProcessor(private val context: Context) {
return false
}
private fun shouldIgnoreDataMessage(message: DataMessage, senderRecipient: Recipient, threadRecipient: Recipient): Boolean {
return if (threadRecipient.isGroup && threadRecipient.isBlocked) {
true
} else if (threadRecipient.isGroup) {
if (threadRecipient.isUnknownGroup) {
return senderRecipient.isBlocked
}
val isTextMessage = message.body != null
val isMediaMessage = message.isMediaMessage
val isExpireMessage = message.isExpirationUpdate
val isGv2Update = message.hasSignedGroupChange
val isContentMessage = !isGv2Update && !isExpireMessage && (isTextMessage || isMediaMessage)
val isGroupActive = threadRecipient.isActiveGroup
isContentMessage && !isGroupActive || senderRecipient.isBlocked && !isGv2Update
} else {
senderRecipient.isBlocked
}
}
@Throws(BadGroupIdException::class)
private fun handlePendingRetry(pending: PendingRetryReceiptModel?, timestamp: Long, destination: Recipient): Long {
var receivedTime = System.currentTimeMillis()