beginHistoryReadPositionLocation method
开始查询最早未读消息,调用方负责完成实际滚动。
Implementation
Future<NIMResult<NIMMessage>?> beginHistoryReadPositionLocation() async {
if (_isDisposed || !historyReadPositionTracker.beginLocation()) {
return null;
}
final lifecycleVersion = _historyReadPositionLifecycleVersion;
_historyReadPositionTargetId = null;
_historyReadPositionLoading = true;
notifyListeners();
final readTime = historyReadPositionTracker.lastReadTime;
if (readTime == null) {
completeHistoryReadPositionLocation(success: false);
return null;
}
final strictMode = await _getMessageListStrictMode();
if (!_isHistoryReadPositionLifecycleActive(lifecycleVersion)) return null;
final result = await ChatMessageRepo.getFirstMessageAfterReadTime(
conversationId,
readTime,
enableStrictMode: strictMode,
);
if (!_isHistoryReadPositionLifecycleActive(lifecycleVersion)) return result;
if (!result.isSuccess || result.data == null) {
completeHistoryReadPositionLocation(success: false);
} else {
_historyReadPositionTargetId = _historyReadPositionMessageId(
result.data!,
);
}
return result;
}