keep reference to previous and next message in message
This commit is contained in:
parent
a8a37ec08d
commit
0bb2c3c4d5
|
@ -57,8 +57,8 @@ public class Conversation extends AbstractEntity {
|
|||
|
||||
private String nextPresence;
|
||||
|
||||
private transient ArrayList<Message> messages = new ArrayList<Message>();
|
||||
private transient Account account = null;
|
||||
protected ArrayList<Message> messages = new ArrayList<Message>();
|
||||
protected Account account = null;
|
||||
|
||||
private transient SessionImpl otrSession;
|
||||
|
||||
|
|
|
@ -62,6 +62,9 @@ public class Message extends AbstractEntity {
|
|||
protected Downloadable downloadable = null;
|
||||
public boolean markable = false;
|
||||
|
||||
private Message mNextMessage = null;
|
||||
private Message mPreviousMessage = null;
|
||||
|
||||
private Message() {
|
||||
|
||||
}
|
||||
|
@ -293,22 +296,35 @@ public class Message extends AbstractEntity {
|
|||
}
|
||||
|
||||
public Message next() {
|
||||
int index = this.conversation.getMessages().indexOf(this);
|
||||
if (index < 0 || index >= this.conversation.getMessages().size() - 1) {
|
||||
return null;
|
||||
if (this.mNextMessage == null) {
|
||||
synchronized (this.conversation.messages) {
|
||||
int index = this.conversation.messages.indexOf(this);
|
||||
if (index < 0
|
||||
|| index >= this.conversation.getMessages().size() - 1) {
|
||||
this.mNextMessage = null;
|
||||
} else {
|
||||
return this.conversation.getMessages().get(index + 1);
|
||||
this.mNextMessage = this.conversation.messages
|
||||
.get(index + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
return this.mNextMessage;
|
||||
}
|
||||
|
||||
public Message prev() {
|
||||
int index = this.conversation.getMessages().indexOf(this);
|
||||
if (index <= 0 || index > this.conversation.getMessages().size()) {
|
||||
return null;
|
||||
if (this.mPreviousMessage == null) {
|
||||
synchronized (this.conversation.messages) {
|
||||
int index = this.conversation.messages.indexOf(this);
|
||||
if (index <= 0 || index > this.conversation.messages.size()) {
|
||||
this.mPreviousMessage = null;
|
||||
} else {
|
||||
return this.conversation.getMessages().get(index - 1);
|
||||
this.mPreviousMessage = this.conversation.messages
|
||||
.get(index - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
return this.mPreviousMessage;
|
||||
}
|
||||
|
||||
public boolean mergable(Message message) {
|
||||
if (message == null) {
|
||||
|
|
|
@ -40,7 +40,6 @@ import android.util.SparseArray;
|
|||
import eu.siacs.conversations.Config;
|
||||
import eu.siacs.conversations.entities.Account;
|
||||
import eu.siacs.conversations.services.XmppConnectionService;
|
||||
import eu.siacs.conversations.ui.StartConversationActivity;
|
||||
import eu.siacs.conversations.utils.CryptoHelper;
|
||||
import eu.siacs.conversations.utils.DNSHelper;
|
||||
import eu.siacs.conversations.utils.zlib.ZLibOutputStream;
|
||||
|
|
Loading…
Reference in a new issue