synchronize around getting last visibile uuid

This commit is contained in:
Daniel Gultsch 2018-04-04 20:07:08 +02:00
parent 4f2c3df329
commit 41972e94eb
1 changed files with 14 additions and 12 deletions

View File

@ -1581,20 +1581,22 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
if (binding == null) { if (binding == null) {
return null; return null;
} }
int pos = binding.messagesView.getLastVisiblePosition(); synchronized (this.messageList) {
if (pos >= 0) { int pos = binding.messagesView.getLastVisiblePosition();
Message message = null; if (pos >= 0) {
for(int i = pos ; i >= 0; --i) { Message message = null;
message = (Message) binding.messagesView.getItemAtPosition(i); for (int i = pos; i >= 0; --i) {
if (message.getType() != Message.TYPE_STATUS) { message = (Message) binding.messagesView.getItemAtPosition(i);
break; if (message.getType() != Message.TYPE_STATUS) {
break;
}
} }
} if (message != null) {
if (message != null) { while (message.next() != null && message.next().wasMergedIntoPrevious()) {
while (message.next() != null && message.next().wasMergedIntoPrevious()) { message = message.next();
message = message.next(); }
return message.getUuid();
} }
return message.getUuid();
} }
} }
return null; return null;