queryConversationNextList method

void queryConversationNextList()

Implementation

void queryConversationNextList() async {
  int offset = _conversationList.length;
  _logI('queryConversationNextList _isLoading ${offset},${_isLoading},'
      '${_finished}');
  if (_isLoading || _finished) {
    return;
  }
  _isLoading = true;
  final _resultData =
      await ConversationRepo.getConversationList(_offset, pageLimit);
  if (_resultData != null) {
    _offset = _resultData.offset;
    _finished = _resultData.finished;
    final myId = IMKitClient.account();
    _logI(
        'queryConversationNextList ${_offset},${_finished},${_resultData.conversationList?.length}');

    if (myId != null) {
      final aitSessionList = await AitServer.instance.getAllAitSession(myId);
      var resultList = convertConversationInfo(_resultData.conversationList)!;
      List<String> userIdList = [];
      for (int index = resultList.length - 1; index >= 0; index--) {
        var element = resultList[index];
        if (_isMineLeave(element)) {
          deleteConversation(element);
          resultList.remove(index);
        } else {
          if (IMKitClient.enableAit) {
            if (aitSessionList.contains(element.getConversationId()) &&
                element.getUnreadCount() > 0) {
              element.haveBeenAit = true;
            }
          }
          if (element.conversation.type == NIMConversationType.p2p &&
              getIt<ContactProvider>().getContactInCache(element.targetId) ==
                  null) {
            userIdList.add(element.targetId);
          }
        }
      }
      _conversationList.addAll(resultList);
      notifyListeners();
      fetchUserInfo(userIdList);
    }
    _isLoading = false;
  }
}