拉取历史信息时,处理中间几个月时间没有消息的情况,最长间隔时24个月

This commit is contained in:
imhao183
2020-10-22 08:09:48 +08:00
parent 52bbf57760
commit 06bcfea16e
@@ -755,14 +755,22 @@ public class DatabaseStore {
long[] before = new long[1];
before[0] = beforeUid;
boolean hasMore = loadRemoteMessagesFromTable(user, conversation, before, count, MessageShardingUtil.getMessageTable(beforeUid), messages);
if (messages.size() < count) {
if (hasMore) {
loadRemoteMessagesFromTable(user, conversation, before, count - messages.size(), MessageShardingUtil.getMessageTable(beforeUid), messages);
} else {
String nexTable = MessageShardingUtil.getPreviousMessageTable(before[0]);
if (!StringUtil.isNullOrEmpty(nexTable)) {
loadRemoteMessagesFromTable(user, conversation, before, count - messages.size(), nexTable, messages);
}
while (messages.size() < count && hasMore) {
hasMore = loadRemoteMessagesFromTable(user, conversation, before, count - messages.size(), MessageShardingUtil.getMessageTable(beforeUid), messages);
}
int month = 0;
while (messages.size() < count && !DBUtil.IsEmbedDB && month++ < 24) {
String nexTable = MessageShardingUtil.getPreviousMessageTable(before[0]);
int size = messages.size();
hasMore = true;
while (size == messages.size() && hasMore) {
hasMore = loadRemoteMessagesFromTable(user, conversation, before, count - messages.size(), nexTable, messages);
}
if (size < messages.size()) {
break;
}
}