Proper way to determine if a message is a control message
pull/1710/head
ThomasSession 2 months ago
parent c35930c408
commit 947bae2a25

@ -547,7 +547,7 @@ class ConversationReactionOverlay : FrameLayout {
val items: MutableList<ActionItem> = ArrayList() val items: MutableList<ActionItem> = ArrayList()
// Prepare // Prepare
val containsControlMessage = message.isUpdate val containsControlMessage = message.isControlMessage
val hasText = !message.body.isEmpty() val hasText = !message.body.isEmpty()
val openGroup = lokiThreadDatabase.getOpenGroupChat(message.threadId) val openGroup = lokiThreadDatabase.getOpenGroupChat(message.threadId)
val userPublicKey = textSecurePreferences.getLocalNumber()!! val userPublicKey = textSecurePreferences.getLocalNumber()!!
@ -556,7 +556,7 @@ class ConversationReactionOverlay : FrameLayout {
deprecationManager.isDeprecated deprecationManager.isDeprecated
// control messages and "marked as deleted" messages can only delete // control messages and "marked as deleted" messages can only delete
val isDeleteOnly = message.isDeleted || message.isControlMessage val isDeleteOnly = message.isDeleted || containsControlMessage
// Select message // Select message
if(!isDeleteOnly && !isDeprecatedLegacyGroup) { if(!isDeleteOnly && !isDeprecatedLegacyGroup) {

@ -35,7 +35,7 @@ class ConversationActionModeCallback(
fun updateActionModeMenu(menu: Menu) { fun updateActionModeMenu(menu: Menu) {
// Prepare // Prepare
val selectedItems = adapter.selectedItems val selectedItems = adapter.selectedItems
val containsControlMessage = selectedItems.any { it.isUpdate } val containsControlMessage = selectedItems.any { it.isControlMessage }
val hasText = selectedItems.any { it.body.isNotEmpty() } val hasText = selectedItems.any { it.body.isNotEmpty() }
if (selectedItems.isEmpty()) { return } if (selectedItems.isEmpty()) { return }
val firstMessage = selectedItems.iterator().next() val firstMessage = selectedItems.iterator().next()

@ -389,14 +389,14 @@ class VisibleMessageView : FrameLayout {
} }
private fun isStartOfMessageCluster(current: MessageRecord, previous: MessageRecord?, isGroupThread: Boolean): Boolean = 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 current.recipient.address != previous.recipient.address
} else { } else {
current.isOutgoing != previous.isOutgoing current.isOutgoing != previous.isOutgoing
} }
private fun isEndOfMessageCluster(current: MessageRecord, next: MessageRecord?, isGroupThread: Boolean): Boolean = 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 current.recipient.address != next.recipient.address
} else { } else {
current.isOutgoing != next.isOutgoing current.isOutgoing != next.isOutgoing

@ -118,10 +118,6 @@ public abstract class MessageRecord extends DisplayRecord {
return false; return false;
} }
public boolean isUpdate() {
return isExpirationTimerUpdate() || isCallLog() || isDataExtractionNotification();
}
/** /**
* @return Decoded group update message. Only valid if the message is a group update message. * @return Decoded group update message. Only valid if the message is a group update message.
*/ */

Loading…
Cancel
Save