clearUnread method

void clearUnread()

Implementation

void clearUnread() {
  if (_isClearingUnread) {
    _hasPendingClearUnread = true;
    return;
  }

  _isClearingUnread = true;
  RCIMIWConversation curCon = _con;
  engineProvider.engine?.clearUnreadCount(
      curCon.conversationType ?? RCIMIWConversationType.invalid,
      curCon.targetId ?? '',
      curCon.channelId,
      messages.last.sentTime ?? DateTime.now().millisecondsSinceEpoch,
      callback: IRCIMIWClearUnreadCountCallback(
    onUnreadCountCleared: (code) {
      _isClearingUnread = false;
      if (code == 0) {
        curCon.unreadCount = 0;
        notifyListeners();
      }
      engineProvider.engine?.syncConversationReadStatus(
          curCon.conversationType ?? RCIMIWConversationType.invalid,
          curCon.targetId ?? '',
          curCon.channelId,
          messages.last.sentTime ?? DateTime.now().millisecondsSinceEpoch,
          callback: IRCIMIWSyncConversationReadStatusCallback(
              onConversationReadStatusSynced: (code) {
        if (code == 0) {
          debugPrint('同步会话阅读状态成功');
        }
      }));
      // 更新总未读消息数
      engineProvider.updateTotalUnreadCount();

      // 如果有待处理的清除未读请求,执行一次
      if (_hasPendingClearUnread) {
        _hasPendingClearUnread = false;
        clearUnread();
      }
    },
  ));
}