loadOlderMessages method
上拉更早消息:先查本地;本地该页为空时才打网,写库后再读本地。
Implementation
Future<MessageListResult> loadOlderMessages({
required int talkMode,
required int toFromId,
required String beforeSequence,
int count = 30,
}) async {
final local = await _store.queryMessages(
talkMode: talkMode,
toFromId: toFromId,
cursor: beforeSequence,
limit: count,
);
if (local.items.isNotEmpty) return local;
final before = int.tryParse(beforeSequence) ?? 0;
if (before <= 0 || !_net.isOnline) return local;
try {
final remote = await _fetchRecordsPage(
talkMode: talkMode,
toFromId: toFromId,
cursor: beforeSequence,
limit: count,
);
if (remote.isNotEmpty) {
await _store.upsertMessages(remote);
}
} catch (e) {
GoChatLogger.e('loadOlderMessages network failed', e);
return local;
}
return _store.queryMessages(
talkMode: talkMode,
toFromId: toFromId,
cursor: beforeSequence,
limit: count,
);
}