Browse Source

feat(im): 添加活跃聊天用户ID获取功能并优化消息已读状态处理

- 实现了获取当前正在聊天的用户ID列表的方法
- 在接收消息时检查发送者是否为当前聊天用户
- 自动将当前聊天会话的消息标记为已读状态
- 使用微任务异步处理消息已读标记以优化性能
master
Jolie 2 months ago
parent
commit
95cdc047b4
1 changed files with 13 additions and 0 deletions
  1. 13
      lib/im/im_manager.dart

13
lib/im/im_manager.dart

@ -60,6 +60,11 @@ class IMManager {
// ChatController key userId
final Map<String, ChatController> _activeChatControllers = {};
/// ID列表
Set<String> getActiveChatUserIds() {
return _activeChatControllers.keys.toSet();
}
// Presence key userId
final Map<String, Function(bool)> _presenceCallbacks = {};
@ -219,6 +224,14 @@ class IMManager {
//
for (var message in messages) {
if (message.direction == MessageDirection.RECEIVE && message.onlineState) {
//
final fromId = message.from;
if (fromId != null && _activeChatControllers.containsKey(fromId)) {
//
Future.microtask(() async {
await markAllMessagesAsRead(fromId);
});
}
_parseUserInfoFromMessageExt(message);
//

Loading…
Cancel
Save