From 2ee2d2883a58897650e2dca046a603528f286e0d Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Tue, 27 Jun 2023 11:53:45 -0300 Subject: [PATCH] Disallow reacting to pending or failed messages. --- .../securesms/conversation/ConversationFragment.java | 4 +--- .../securesms/conversation/v2/ConversationFragment.kt | 5 ++--- .../org/thoughtcrime/securesms/util/MessageRecordUtil.kt | 7 +++++++ 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java index 1f002d1d17..83b6990993 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java @@ -1570,9 +1570,7 @@ public class ConversationFragment extends LoggingFragment implements Multiselect return; } - if (messageRecord.isSecure() && - !messageRecord.isRemoteDelete() && - !messageRecord.isUpdate() && + if (MessageRecordUtil.isValidReactionTarget(messageRecord) && !recipient.get().isBlocked() && !messageRequestViewModel.shouldShowMessageRequest() && (!recipient.get().isGroup() || recipient.get().isActiveGroup()) && diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt index 3bc229086c..539e45cd91 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt @@ -275,6 +275,7 @@ import org.thoughtcrime.securesms.util.fragments.requireListener import org.thoughtcrime.securesms.util.getRecordQuoteType import org.thoughtcrime.securesms.util.hasAudio import org.thoughtcrime.securesms.util.hasGiftBadge +import org.thoughtcrime.securesms.util.isValidReactionTarget import org.thoughtcrime.securesms.util.viewModel import org.thoughtcrime.securesms.util.views.Stub import org.thoughtcrime.securesms.util.visible @@ -2122,9 +2123,7 @@ class ConversationFragment : return } - if (messageRecord.isSecure && - !messageRecord.isRemoteDelete && - !messageRecord.isUpdate && + if (messageRecord.isValidReactionTarget() && !recipient.isBlocked && !viewModel.hasMessageRequestState && (!recipient.isGroup || recipient.isActiveGroup) && diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/MessageRecordUtil.kt b/app/src/main/java/org/thoughtcrime/securesms/util/MessageRecordUtil.kt index 3428903e71..6802182837 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/MessageRecordUtil.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/util/MessageRecordUtil.kt @@ -155,3 +155,10 @@ fun MessageRecord.getRecordQuoteType(): QuoteModel.Type { fun MessageRecord.isEditMessage(): Boolean { return this is MediaMmsMessageRecord && isEditMessage } + +/** + * Returns whether or not the given message record can be reacted to. + */ +fun MessageRecord.isValidReactionTarget(): Boolean { + return isSecure && !isPending && !isFailed && !isRemoteDelete && !isUpdate +}