From 59978e157ccbf4717a15238ddb0b0d0d422d7e3f Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Wed, 17 Feb 2016 16:51:36 +0100 Subject: only offer message correction for the very last message --- .../eu/siacs/conversations/entities/Conversation.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'src/main/java/eu/siacs/conversations/entities/Conversation.java') diff --git a/src/main/java/eu/siacs/conversations/entities/Conversation.java b/src/main/java/eu/siacs/conversations/entities/Conversation.java index c72ac09e..a179d96b 100644 --- a/src/main/java/eu/siacs/conversations/entities/Conversation.java +++ b/src/main/java/eu/siacs/conversations/entities/Conversation.java @@ -227,11 +227,18 @@ public class Conversation extends AbstractEntity implements Blockable { return null; } - public Message findMessageWithRemoteIdAndCounterpart(String id, Jid counterpart) { + public Message findMessageWithRemoteIdAndCounterpart(String id, Jid counterpart, boolean received, boolean carbon) { synchronized (this.messages) { - for(Message message : this.messages) { - if(id.equals(message.getRemoteMsgId()) && counterpart.equals(message.getCounterpart())) { - return message; + for(int i = this.messages.size() - 1; i >= 0; --i) { + Message message = messages.get(i); + if (counterpart.equals(message.getCounterpart()) + && ((message.getStatus() == Message.STATUS_RECEIVED) == received) + && (carbon == message.isCarbon() || received) ) { + if (id.equals(message.getRemoteMsgId())) { + return message; + } else { + return null; + } } } } -- cgit v1.2.3