getOrSyncHistoryMessages method
dynamic
getOrSyncHistoryMessages()
Implementation
getOrSyncHistoryMessages(
String channelId,
int channelType,
int oldestOrderSeq,
bool contain,
int pullMode,
int limit,
int aroundMsgOrderSeq,
final Function(List<WKMsg>) iGetOrSyncHistoryMsgBack,
final Function() syncBack) async {
if (aroundMsgOrderSeq != 0) {
int maxMsgSeq = await getMaxMessageSeq(channelId, channelType);
int aroundMsgSeq = getOrNearbyMsgSeq(aroundMsgOrderSeq);
if (maxMsgSeq >= aroundMsgSeq && maxMsgSeq - aroundMsgSeq <= limit) {
// 显示最后一页数据
// oldestOrderSeq = 0;
oldestOrderSeq =
await getMessageOrderSeq(maxMsgSeq, channelId, channelType);
contain = true;
pullMode = 0;
} else {
int minOrderSeq = await MessageDB.shared
.getOrderSeq(channelId, channelType, aroundMsgOrderSeq, 3);
if (minOrderSeq == 0) {
oldestOrderSeq = aroundMsgOrderSeq;
} else {
if (minOrderSeq + limit < aroundMsgOrderSeq) {
if (aroundMsgOrderSeq % wkOrderSeqFactor == 0) {
oldestOrderSeq = ((aroundMsgOrderSeq / wkOrderSeqFactor - 3) *
wkOrderSeqFactor)
.toInt();
} else {
oldestOrderSeq = aroundMsgOrderSeq - 3;
}
} else {
// todo 这里只会查询3条数据 oldestOrderSeq = minOrderSeq
int startOrderSeq = await MessageDB.shared
.getOrderSeq(channelId, channelType, aroundMsgOrderSeq, limit);
if (startOrderSeq == 0) {
oldestOrderSeq = aroundMsgOrderSeq;
} else {
oldestOrderSeq = startOrderSeq;
}
}
}
pullMode = 1;
contain = true;
}
}
MessageDB.shared.getOrSyncHistoryMessages(
channelId,
channelType,
oldestOrderSeq,
contain,
pullMode,
limit,
iGetOrSyncHistoryMsgBack,
syncBack);
}