aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/services/XmppConnectionService.java
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2017-05-17 21:58:46 +0200
committerChristian Schneppe <christian@pix-art.de>2017-05-17 21:58:46 +0200
commit5a60dab1d5ead7a94d9d86cecc563210fed4b4bf (patch)
tree383ecee02d5fd06737fb7d4cfbfb2360c3c441ba /src/main/java/de/pixart/messenger/services/XmppConnectionService.java
parentd1449161398a099db7f3c5e10ccfc07dd8cffe3b (diff)
use mam reference instead of timestamp
Diffstat (limited to 'src/main/java/de/pixart/messenger/services/XmppConnectionService.java')
-rw-r--r--src/main/java/de/pixart/messenger/services/XmppConnectionService.java17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java
index 7bbc9aa78..f8842953d 100644
--- a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java
+++ b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java
@@ -140,6 +140,7 @@ import de.pixart.messenger.xmpp.jid.Jid;
import de.pixart.messenger.xmpp.jingle.JingleConnectionManager;
import de.pixart.messenger.xmpp.jingle.OnJinglePacketReceived;
import de.pixart.messenger.xmpp.jingle.stanzas.JinglePacket;
+import de.pixart.messenger.xmpp.mam.MamReference;
import de.pixart.messenger.xmpp.pep.Avatar;
import de.pixart.messenger.xmpp.stanzas.IqPacket;
import de.pixart.messenger.xmpp.stanzas.MessagePacket;
@@ -1754,10 +1755,10 @@ public class XmppConnectionService extends Service {
callback.onMoreMessagesLoaded(messages.size(), conversation);
} else if (conversation.hasMessagesLeftOnServer()
&& account.isOnlineAndConnected()
- && conversation.getLastClearHistory() == 0) {
+ && conversation.getLastClearHistory().getTimestamp() == 0) {
if ((conversation.getMode() == Conversation.MODE_SINGLE && account.getXmppConnection().getFeatures().mam())
|| (conversation.getMode() == Conversation.MODE_MULTI && conversation.getMucOptions().mamSupport())) {
- MessageArchiveService.Query query = getMessageArchiveService().query(conversation, 0, timestamp, false);
+ MessageArchiveService.Query query = getMessageArchiveService().query(conversation, new MamReference(0), timestamp, false);
if (query != null) {
query.setCallback(callback);
callback.informUser(R.string.fetching_history_from_server);
@@ -2417,7 +2418,7 @@ public class XmppConnectionService extends Service {
x.addChild("history").setAttribute("maxchars", "0");
} else {
// Fallback to muc history
- x.addChild("history").setAttribute("since", PresenceGenerator.getTimestamp(conversation.getLastMessageTransmitted()));
+ x.addChild("history").setAttribute("since", PresenceGenerator.getTimestamp(conversation.getLastMessageTransmitted().getTimestamp()));
}
sendPresencePacket(account, packet);
if (onConferenceJoined != null) {
@@ -3836,15 +3837,19 @@ public class XmppConnectionService extends Service {
}
public void clearConversationHistory(final Conversation conversation) {
- long clearDate;
+ final long clearDate;
+ final String reference;
if (conversation.countMessages() > 0) {
- clearDate = conversation.getLatestMessage().getTimeSent() + 1000;
+ Message latestMessage = conversation.getLatestMessage();
+ clearDate = latestMessage.getTimeSent() + 1000;
+ reference = latestMessage.getServerMsgId();
} else {
clearDate = System.currentTimeMillis();
+ reference = null;
}
conversation.clearMessages();
conversation.setHasMessagesLeftOnServer(false); //avoid messages getting loaded through mam
- conversation.setLastClearHistory(clearDate);
+ conversation.setLastClearHistory(clearDate, reference);
Runnable runnable = new Runnable() {
@Override
public void run() {