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();
}
},
));
}