beginHistoryReadPositionLocation method

Future<NIMResult<NIMMessage>?> beginHistoryReadPositionLocation()

开始查询最早未读消息,调用方负责完成实际滚动。

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;
}