aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/services/MessageArchiveService.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/de/pixart/messenger/services/MessageArchiveService.java')
-rw-r--r--src/main/java/de/pixart/messenger/services/MessageArchiveService.java17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/main/java/de/pixart/messenger/services/MessageArchiveService.java b/src/main/java/de/pixart/messenger/services/MessageArchiveService.java
index fb8f4d1c4..4748dc86d 100644
--- a/src/main/java/de/pixart/messenger/services/MessageArchiveService.java
+++ b/src/main/java/de/pixart/messenger/services/MessageArchiveService.java
@@ -45,9 +45,18 @@ public class MessageArchiveService implements OnAdvancedStreamFeaturesLoaded {
}
}
}
- Pair<Long,String> pair = mXmppConnectionService.databaseBackend.getLastMessageReceived(account);
- long startCatchup = pair == null ? 0 : pair.first;
- long endCatchup = account.getXmppConnection().getLastSessionEstablished();
+ final Pair<Long, String> lastMessageReceived = mXmppConnectionService.databaseBackend.getLastMessageReceived(account);
+ final Pair<Long, String> lastClearDate = mXmppConnectionService.databaseBackend.getLastClearDate(account);
+ long startCatchup;
+ final String reference;
+ if (lastMessageReceived != null && lastMessageReceived.first >= lastClearDate.first) {
+ startCatchup = lastMessageReceived.first;
+ reference = lastMessageReceived.second;
+ } else {
+ startCatchup = lastClearDate.first;
+ reference = null;
+ }
+ long endCatchup = account.getXmppConnection().getLastSessionEstablished();
final Query query;
if (startCatchup == 0) {
return;
@@ -62,7 +71,7 @@ public class MessageArchiveService implements OnAdvancedStreamFeaturesLoaded {
query = new Query(account, startCatchup, endCatchup);
} else {
query = new Query(account, startCatchup, endCatchup);
- query.reference = pair.second;
+ query.reference = reference;
}
this.queries.add(query);
this.execute(query);