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