From 947bae2a2506043d374d97b57e49cb0db1983f5a Mon Sep 17 00:00:00 2001 From: ThomasSession Date: Mon, 17 Feb 2025 15:10:16 +1100 Subject: [PATCH] SES-3258 Proper way to determine if a message is a control message --- .../securesms/conversation/v2/ConversationReactionOverlay.kt | 4 ++-- .../conversation/v2/menus/ConversationActionModeCallback.kt | 2 +- .../securesms/conversation/v2/messages/VisibleMessageView.kt | 4 ++-- .../thoughtcrime/securesms/database/model/MessageRecord.java | 4 ---- 4 files changed, 5 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationReactionOverlay.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationReactionOverlay.kt index d11fc5e587..9292b7b1c2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationReactionOverlay.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationReactionOverlay.kt @@ -547,7 +547,7 @@ class ConversationReactionOverlay : FrameLayout { val items: MutableList = ArrayList() // Prepare - val containsControlMessage = message.isUpdate + val containsControlMessage = message.isControlMessage val hasText = !message.body.isEmpty() val openGroup = lokiThreadDatabase.getOpenGroupChat(message.threadId) val userPublicKey = textSecurePreferences.getLocalNumber()!! @@ -556,7 +556,7 @@ class ConversationReactionOverlay : FrameLayout { deprecationManager.isDeprecated // control messages and "marked as deleted" messages can only delete - val isDeleteOnly = message.isDeleted || message.isControlMessage + val isDeleteOnly = message.isDeleted || containsControlMessage // Select message if(!isDeleteOnly && !isDeprecatedLegacyGroup) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/menus/ConversationActionModeCallback.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/menus/ConversationActionModeCallback.kt index 65f943cc35..2799eb634f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/menus/ConversationActionModeCallback.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/menus/ConversationActionModeCallback.kt @@ -35,7 +35,7 @@ class ConversationActionModeCallback( fun updateActionModeMenu(menu: Menu) { // Prepare val selectedItems = adapter.selectedItems - val containsControlMessage = selectedItems.any { it.isUpdate } + val containsControlMessage = selectedItems.any { it.isControlMessage } val hasText = selectedItems.any { it.body.isNotEmpty() } if (selectedItems.isEmpty()) { return } val firstMessage = selectedItems.iterator().next() diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/messages/VisibleMessageView.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/messages/VisibleMessageView.kt index e8aaaf11b7..0a9c5089e7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/messages/VisibleMessageView.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/messages/VisibleMessageView.kt @@ -389,14 +389,14 @@ class VisibleMessageView : FrameLayout { } private fun isStartOfMessageCluster(current: MessageRecord, previous: MessageRecord?, isGroupThread: Boolean): Boolean = - previous == null || previous.isUpdate || !DateUtils.isSameHour(current.timestamp, previous.timestamp) || if (isGroupThread) { + previous == null || previous.isControlMessage || !DateUtils.isSameHour(current.timestamp, previous.timestamp) || if (isGroupThread) { current.recipient.address != previous.recipient.address } else { current.isOutgoing != previous.isOutgoing } private fun isEndOfMessageCluster(current: MessageRecord, next: MessageRecord?, isGroupThread: Boolean): Boolean = - next == null || next.isUpdate || !DateUtils.isSameHour(current.timestamp, next.timestamp) || if (isGroupThread) { + next == null || next.isControlMessage || !DateUtils.isSameHour(current.timestamp, next.timestamp) || if (isGroupThread) { current.recipient.address != next.recipient.address } else { current.isOutgoing != next.isOutgoing diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/model/MessageRecord.java b/app/src/main/java/org/thoughtcrime/securesms/database/model/MessageRecord.java index 041f7c53a8..1a6773813d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/model/MessageRecord.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/model/MessageRecord.java @@ -118,10 +118,6 @@ public abstract class MessageRecord extends DisplayRecord { return false; } - public boolean isUpdate() { - return isExpirationTimerUpdate() || isCallLog() || isDataExtractionNotification(); - } - /** * @return Decoded group update message. Only valid if the message is a group update message. */