From a57642ac29cf95115276679f78031494274aec4d Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Thu, 23 May 2024 22:58:11 -0500 Subject: [PATCH] Use occupantId to check if muc user matches --- src/main/java/eu/siacs/conversations/entities/Message.java | 4 +++- .../java/eu/siacs/conversations/parser/MessageParser.java | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/entities/Message.java b/src/main/java/eu/siacs/conversations/entities/Message.java index 5915e5675e31f20dbd27091c9c914a29f5f3ce9d..c78053460fd6d34b61b529ae1aa134148de22133 100644 --- a/src/main/java/eu/siacs/conversations/entities/Message.java +++ b/src/main/java/eu/siacs/conversations/entities/Message.java @@ -696,7 +696,9 @@ public class Message extends AbstractEntity implements AvatarService.Avatarable public boolean sameMucUser(Message otherMessage) { final MucOptions.User thisUser = this.user == null ? null : this.user.get(); final MucOptions.User otherUser = otherMessage.user == null ? null : otherMessage.user.get(); - return thisUser != null && thisUser == otherUser; + return + (thisUser != null && thisUser == otherUser) || + (getOccupantId() != null && getOccupantId().equals(otherMessage.getOccupantId())); } public String getErrorMessage() { diff --git a/src/main/java/eu/siacs/conversations/parser/MessageParser.java b/src/main/java/eu/siacs/conversations/parser/MessageParser.java index 56da0db1ef18b7557a8fc49a6d5e1a279f8066aa..88c63628fe221a4893a658cb61a9a57373fa11bb 100644 --- a/src/main/java/eu/siacs/conversations/parser/MessageParser.java +++ b/src/main/java/eu/siacs/conversations/parser/MessageParser.java @@ -796,7 +796,7 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece final boolean trueCountersMatch = replacedMessage.getTrueCounterpart() != null && message.getTrueCounterpart() != null && replacedMessage.getTrueCounterpart().asBareJid().equals(message.getTrueCounterpart().asBareJid()); - final boolean mucUserMatches = query == null && replacedMessage.sameMucUser(message); //can not be checked when using mam + final boolean mucUserMatches = query == null && replacedMessage.sameMucUser(message); final boolean duplicate = conversation.hasDuplicateMessage(message); if (fingerprintsMatch && (trueCountersMatch || !conversationMultiMode || mucUserMatches || counterpart.isBareJid()) && !duplicate) { Log.d(Config.LOGTAG, "replaced message '" + replacedMessage.getBody() + "' with '" + message.getBody() + "'");