Change summary
src/main/java/eu/siacs/conversations/entities/Message.java | 4 ++
src/main/java/eu/siacs/conversations/parser/MessageParser.java | 7 +++
2 files changed, 10 insertions(+), 1 deletion(-)
Detailed changes
@@ -729,6 +729,10 @@ public class Message extends AbstractEntity implements AvatarService.Avatarable
this.occupantId = id;
}
+ public String getOccupantId() {
+ return this.occupantId;
+ }
+
public static class MergeSeparator {
}
@@ -676,9 +676,14 @@ public class MessageParser extends AbstractParser implements Consumer<im.convers
final boolean trueCountersMatch = replacedMessage.getTrueCounterpart() != null
&& message.getTrueCounterpart() != null
&& replacedMessage.getTrueCounterpart().asBareJid().equals(message.getTrueCounterpart().asBareJid());
+ final boolean occupantIdMatch =
+ replacedMessage.getOccupantId() != null
+ && replacedMessage
+ .getOccupantId()
+ .equals(message.getOccupantId());
final boolean mucUserMatches = query == null && replacedMessage.sameMucUser(message); //can not be checked when using mam
final boolean duplicate = conversation.hasDuplicateMessage(message);
- if (fingerprintsMatch && (trueCountersMatch || !conversationMultiMode || mucUserMatches) && !duplicate) {
+ if (fingerprintsMatch && (trueCountersMatch || occupantIdMatch || !conversationMultiMode || mucUserMatches) && !duplicate) {
synchronized (replacedMessage) {
final String uuid = replacedMessage.getUuid();
replacedMessage.setUuid(UUID.randomUUID().toString());