Use occupantId to check if muc user matches

Stephen Paul Weber created

Change summary

src/main/java/eu/siacs/conversations/entities/Message.java     | 4 +++-
src/main/java/eu/siacs/conversations/parser/MessageParser.java | 2 +-
2 files changed, 4 insertions(+), 2 deletions(-)

Detailed changes

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() {

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() + "'");