From a80cf3876b7ccbad48997b898f11f108d522613b Mon Sep 17 00:00:00 2001 From: dujiepeng <347302029@qq.com> Date: Wed, 19 Jan 2022 15:22:26 +0800 Subject: [PATCH 01/14] fix download file dont call callback methods. --- ios/Classes/EMChatManagerWrapper.m | 7 +++++-- lib/src/models/em_message.dart | 4 +--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/ios/Classes/EMChatManagerWrapper.m b/ios/Classes/EMChatManagerWrapper.m index d42e260c..472eeb4b 100644 --- a/ios/Classes/EMChatManagerWrapper.m +++ b/ios/Classes/EMChatManagerWrapper.m @@ -395,7 +395,8 @@ - (void)downloadAttachment:(NSDictionary *)param result:(FlutterResult)result { __weak typeof(self) weakSelf = self; __block EMMessage *msg = [EMMessage fromJson:param[@"message"]]; - [EMClient.sharedClient.chatManager downloadMessageAttachment:msg + EMMessage *needDownMSg = [EMClient.sharedClient.chatManager getMessageWithMessageId:msg.messageId]; + [EMClient.sharedClient.chatManager downloadMessageAttachment:needDownMSg progress:^(int progress) { [weakSelf.messageChannel invokeMethod:EMMethodKeyOnMessageProgressUpdate @@ -432,7 +433,8 @@ - (void)downloadThumbnail:(NSDictionary *)param result:(FlutterResult)result { __weak typeof(self) weakSelf = self; __block EMMessage *msg = [EMMessage fromJson:param[@"message"]]; - [EMClient.sharedClient.chatManager downloadMessageThumbnail:msg + EMMessage *needDownMSg = [EMClient.sharedClient.chatManager getMessageWithMessageId:msg.messageId]; + [EMClient.sharedClient.chatManager downloadMessageThumbnail:needDownMSg progress:^(int progress) { [weakSelf.messageChannel invokeMethod:EMMethodKeyOnMessageProgressUpdate @@ -638,6 +640,7 @@ - (void)onConversationRead:(NSString *)from - (void)messagesDidReceive:(NSArray *)aMessages { NSMutableArray *msgList = [NSMutableArray array]; for (EMMessage *msg in aMessages) { + [msgList addObject:[msg toJson]]; } [self.channel invokeMethod:EMMethodKeyOnMessagesReceived diff --git a/lib/src/models/em_message.dart b/lib/src/models/em_message.dart index 88a8a271..5ea8c1c8 100644 --- a/lib/src/models/em_message.dart +++ b/lib/src/models/em_message.dart @@ -99,9 +99,7 @@ class MessageCallBackManager { } addMessage(EMMessage message) { - if (message.status != EMMessageStatus.SUCCESS) { - cacheMessageMap[message.localTime.toString()] = message; - } + cacheMessageMap[message.localTime.toString()] = message; } removeMessage(EMMessage message) { From 83b686f72d81d5cee8cf034e89009957a4444e04 Mon Sep 17 00:00:00 2001 From: dujiepeng <347302029@qq.com> Date: Wed, 19 Jan 2022 15:26:32 +0800 Subject: [PATCH 02/14] update version. --- pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pubspec.yaml b/pubspec.yaml index 981f7db7..c3292cd2 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: im_flutter_sdk description: Easemob IM flutter SDK. -version: 3.8.3+3 +version: 3.8.3+4 homepage: http://www.easemob.com/product/im environment: From 0981f3db8c5f5bf9c06a118d69781ca6c0735d81 Mon Sep 17 00:00:00 2001 From: dujiepeng <347302029@qq.com> Date: Wed, 19 Jan 2022 17:11:52 +0800 Subject: [PATCH 03/14] change attribute. --- .../com/easemob/im_flutter_sdk/EMHelper.java | 39 +------------------ 1 file changed, 1 insertion(+), 38 deletions(-) diff --git a/android/src/main/java/com/easemob/im_flutter_sdk/EMHelper.java b/android/src/main/java/com/easemob/im_flutter_sdk/EMHelper.java index fca0c3a5..7af0212a 100644 --- a/android/src/main/java/com/easemob/im_flutter_sdk/EMHelper.java +++ b/android/src/main/java/com/easemob/im_flutter_sdk/EMHelper.java @@ -526,44 +526,7 @@ static Map toJson(EMMessage message) { } if (message.ext().size() > 0 && null != message.ext()) { - HashMap map = new HashMap<>(); - for (Map.Entry entry:message.ext().entrySet()) { - String key = entry.getKey().toString(); - try { - JSONObject value = message.getJSONObjectAttribute(key); - map.put(key, value); - continue; - } - catch (HyphenateException e) { - } - try { - boolean value = message.getBooleanAttribute(key); - map.put(key, value); - continue; - } catch (HyphenateException e) { - } - - try { - JSONArray value = message.getJSONArrayAttribute(key); - map.put(key, value); - continue; - } catch (HyphenateException e) { - } - try { - int value = message.getIntAttribute(key); - map.put(key, value); - continue; - } catch (HyphenateException e){ - } - - try { - String value = message.getStringAttribute(key); - map.put(key, value); - continue; - } catch (HyphenateException e) { - } - } - data.put("attributes", map); + data.put("attributes", message.ext()); } data.put("from", message.getFrom()); data.put("to", message.getTo()); From 021fc75541bb2d1678044f061768f16418f161b5 Mon Sep 17 00:00:00 2001 From: dujiepeng <347302029@qq.com> Date: Wed, 19 Jan 2022 18:33:10 +0800 Subject: [PATCH 04/14] clean warnings. --- example/ios/Runner.xcodeproj/project.pbxproj | 2 +- .../xcshareddata/xcschemes/Runner.xcscheme | 2 +- example/lib/pages/account/login_page.dart | 2 -- example/lib/pages/chat/chat_page.dart | 7 ------- example/lib/widgets/wx_expression.dart | 3 --- lib/src/em_chat_manager.dart | 2 -- lib/src/em_chat_room_manager.dart | 3 --- lib/src/em_client.dart | 3 +-- lib/src/em_contact_manager.dart | 4 ---- lib/src/em_group_manager.dart | 5 ----- lib/src/em_push_manager.dart | 1 - lib/src/em_userInfo_manager.dart | 2 -- lib/src/models/em_conversation.dart | 4 ---- lib/src/models/em_message.dart | 1 - lib/src/models/em_push_config.dart | 1 - 15 files changed, 3 insertions(+), 39 deletions(-) diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/example/ios/Runner.xcodeproj/project.pbxproj index f7c89e5f..eaef0504 100644 --- a/example/ios/Runner.xcodeproj/project.pbxproj +++ b/example/ios/Runner.xcodeproj/project.pbxproj @@ -161,7 +161,7 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1020; + LastUpgradeCheck = 1300; ORGANIZATIONNAME = ""; TargetAttributes = { 97C146ED1CF9000F007C117D = { diff --git a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index a28140cf..3db53b6e 100644 --- a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ /// 消息长按 _messageOnLongPress(EMMessage msg) async { print('长按消息 $msg'); - String toAddUsername; - String reason; - try { - EMClient.getInstance.contactManager.addContact(toAddUsername, reason); - } on EMError catch (e) { - debugPrint(e.toString()); - } } /// 发送文字消息 diff --git a/example/lib/widgets/wx_expression.dart b/example/lib/widgets/wx_expression.dart index 7447a3c4..3dcef94d 100644 --- a/example/lib/widgets/wx_expression.dart +++ b/example/lib/widgets/wx_expression.dart @@ -1,6 +1,3 @@ -import 'dart:ui'; - -import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; ///表情组件 diff --git a/lib/src/em_chat_manager.dart b/lib/src/em_chat_manager.dart index bd7b0e27..af98f543 100644 --- a/lib/src/em_chat_manager.dart +++ b/lib/src/em_chat_manager.dart @@ -2,8 +2,6 @@ import "dart:async"; import 'package:flutter/services.dart'; import 'package:im_flutter_sdk/im_flutter_sdk.dart'; -import 'models/em_domain_terms.dart'; -import 'em_sdk_method.dart'; class EMChatManager implements EMMessageStatusListener { static const _channelPrefix = 'com.easemob.im'; diff --git a/lib/src/em_chat_room_manager.dart b/lib/src/em_chat_room_manager.dart index 5d7ee5c9..108234e6 100644 --- a/lib/src/em_chat_room_manager.dart +++ b/lib/src/em_chat_room_manager.dart @@ -3,9 +3,6 @@ import "dart:async"; import 'package:flutter/services.dart'; import 'package:im_flutter_sdk/src/models/em_domain_terms.dart'; import "em_listeners.dart"; -import 'em_sdk_method.dart'; -import 'package:im_flutter_sdk/src/models/em_cursor_result.dart'; -import 'package:im_flutter_sdk/src/models/em_page_result.dart'; class EMChatRoomManager { static const _channelPrefix = 'com.easemob.im'; diff --git a/lib/src/em_client.dart b/lib/src/em_client.dart index 2410c206..d36a68f8 100644 --- a/lib/src/em_client.dart +++ b/lib/src/em_client.dart @@ -10,10 +10,9 @@ import 'em_userInfo_manager.dart'; import 'em_group_manager.dart'; import 'em_listeners.dart'; import 'em_push_manager.dart'; -import 'em_sdk_method.dart'; import 'models/em_domain_terms.dart'; -import 'models/em_options.dart'; + import 'tools/em_log.dart'; class EMClient { diff --git a/lib/src/em_contact_manager.dart b/lib/src/em_contact_manager.dart index 96e0831d..15ad21b2 100644 --- a/lib/src/em_contact_manager.dart +++ b/lib/src/em_contact_manager.dart @@ -3,10 +3,6 @@ import 'dart:async'; import 'package:flutter/services.dart'; import 'package:im_flutter_sdk/im_flutter_sdk.dart'; -import 'em_listeners.dart'; -import 'em_sdk_method.dart'; -import 'models/em_domain_terms.dart'; - class EMContactManager { static const _channelPrefix = 'com.easemob.im'; static const MethodChannel _channel = const MethodChannel( diff --git a/lib/src/em_group_manager.dart b/lib/src/em_group_manager.dart index cd99836e..7efaed98 100644 --- a/lib/src/em_group_manager.dart +++ b/lib/src/em_group_manager.dart @@ -3,11 +3,6 @@ import 'dart:async'; import 'package:flutter/services.dart'; import 'package:im_flutter_sdk/im_flutter_sdk.dart'; -import 'models/em_domain_terms.dart'; -import 'em_sdk_method.dart'; -//import 'em_domain_terms.dart'; -import 'em_listeners.dart'; - class EMGroupManager { static const _channelPrefix = 'com.easemob.im'; static const MethodChannel _channel = const MethodChannel( diff --git a/lib/src/em_push_manager.dart b/lib/src/em_push_manager.dart index b142fc54..119b3363 100644 --- a/lib/src/em_push_manager.dart +++ b/lib/src/em_push_manager.dart @@ -2,7 +2,6 @@ import 'dart:io'; import 'package:flutter/services.dart'; -import 'em_sdk_method.dart'; import 'models/em_domain_terms.dart'; class EMPushManager { diff --git a/lib/src/em_userInfo_manager.dart b/lib/src/em_userInfo_manager.dart index 40cc7aba..f7014edf 100644 --- a/lib/src/em_userInfo_manager.dart +++ b/lib/src/em_userInfo_manager.dart @@ -1,8 +1,6 @@ import 'dart:async'; import 'package:flutter/services.dart'; import 'package:im_flutter_sdk/im_flutter_sdk.dart'; -import 'em_sdk_method.dart'; -import 'models/em_userInfo.dart'; class EMUserInfoManager { static const _channelPrefix = 'com.easemob.im'; diff --git a/lib/src/models/em_conversation.dart b/lib/src/models/em_conversation.dart index 011bb1e4..c7d4d3a8 100644 --- a/lib/src/models/em_conversation.dart +++ b/lib/src/models/em_conversation.dart @@ -1,10 +1,6 @@ import 'dart:core'; import 'package:flutter/services.dart'; import 'package:im_flutter_sdk/im_flutter_sdk.dart'; -import 'package:im_flutter_sdk/src/models/em_error.dart'; -import 'package:im_flutter_sdk/src/models/em_message.dart'; - -import '../em_sdk_method.dart'; enum EMConversationType { Chat, // 单聊消息 diff --git a/lib/src/models/em_message.dart b/lib/src/models/em_message.dart index 5ea8c1c8..1da440df 100644 --- a/lib/src/models/em_message.dart +++ b/lib/src/models/em_message.dart @@ -2,7 +2,6 @@ import 'dart:math'; import 'package:flutter/services.dart'; import 'package:im_flutter_sdk/im_flutter_sdk.dart'; -import 'package:im_flutter_sdk/src/em_sdk_method.dart'; // 消息类型 enum EMMessageChatType { diff --git a/lib/src/models/em_push_config.dart b/lib/src/models/em_push_config.dart index 271f71b4..e622b528 100644 --- a/lib/src/models/em_push_config.dart +++ b/lib/src/models/em_push_config.dart @@ -1,7 +1,6 @@ import 'package:flutter/services.dart'; import '../tools/em_log.dart'; -import '../tools/em_extension.dart'; import 'em_domain_terms.dart'; From e5e0c8f2a345e7fb463b600bbc4252b497b292c2 Mon Sep 17 00:00:00 2001 From: dujiepeng <347302029@qq.com> Date: Thu, 20 Jan 2022 17:29:17 +0800 Subject: [PATCH 05/14] fix custom msg params type error. --- lib/src/models/em_message.dart | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/src/models/em_message.dart b/lib/src/models/em_message.dart index 1da440df..07ce71e4 100644 --- a/lib/src/models/em_message.dart +++ b/lib/src/models/em_message.dart @@ -851,7 +851,10 @@ class EMCustomMessageBody extends EMMessageBody { Map toJson() { final Map data = super.toJson(); data['event'] = event; - data['params'] = params; + if (params != null) { + data['params'] = params; + } + return data; } From 8bb05e0640dadef6920b1b6c5085616bc6925ca4 Mon Sep 17 00:00:00 2001 From: dujiepeng <347302029@qq.com> Date: Thu, 20 Jan 2022 18:58:13 +0800 Subject: [PATCH 06/14] add file size param to create message methods. --- lib/src/models/em_message.dart | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/src/models/em_message.dart b/lib/src/models/em_message.dart index 07ce71e4..a4fb55ea 100644 --- a/lib/src/models/em_message.dart +++ b/lib/src/models/em_message.dart @@ -210,10 +210,12 @@ class EMMessage { required String username, required String filePath, String displayName = '', + int? fileSize, }) : this.createSendMessage( to: username, body: EMFileMessageBody( localPath: filePath, + fileSize: fileSize, displayName: displayName, )); @@ -224,6 +226,7 @@ class EMMessage { String displayName = '', String thumbnailLocalPath = '', bool sendOriginalImage = false, + int? fileSize, double width = 0, double height = 0, }) : this.createSendMessage( @@ -243,6 +246,7 @@ class EMMessage { required String filePath, String displayName = '', int duration = 0, + int? fileSize, String thumbnailLocalPath = '', double width = 0, double height = 0, @@ -252,6 +256,7 @@ class EMMessage { localPath: filePath, displayName: displayName, duration: duration, + fileSize: fileSize, thumbnailLocalPath: thumbnailLocalPath, width: width, height: height, @@ -262,12 +267,14 @@ class EMMessage { required String username, required String filePath, int duration = 0, + int? fileSize, String displayName = '', }) : this.createSendMessage( to: username, body: EMVoiceMessageBody( localPath: filePath, duration: duration, + fileSize: fileSize, displayName: displayName)); /// 构造发送的位置消息 @@ -581,8 +588,11 @@ class EMFileMessageBody extends EMMessageBody { EMFileMessageBody({ this.localPath, this.displayName, + int? fileSize, EMMessageBodyType type = EMMessageBodyType.FILE, - }) : super(type: type); + }) : super(type: type) { + this.fileSize = fileSize ?? 0; + } EMFileMessageBody.fromJson( {required Map map, EMMessageBodyType type = EMMessageBodyType.FILE}) @@ -661,11 +671,13 @@ class EMImageMessageBody extends EMFileMessageBody { String? displayName, this.thumbnailLocalPath, this.sendOriginalImage, + int? fileSize, this.width, this.height, }) : super( localPath: localPath, displayName: displayName, + fileSize: fileSize, type: EMMessageBodyType.IMAGE, ); @@ -724,12 +736,14 @@ class EMVideoMessageBody extends EMFileMessageBody { String? localPath, String? displayName, this.duration, + int? fileSize, this.thumbnailLocalPath, this.height, this.width, }) : super( localPath: localPath, displayName: displayName, + fileSize: fileSize, type: EMMessageBodyType.VIDEO, ); @@ -787,10 +801,12 @@ class EMVoiceMessageBody extends EMFileMessageBody { EMVoiceMessageBody({ localPath, String? displayName, + int? fileSize, this.duration, }) : super( localPath: localPath, displayName: displayName, + fileSize: fileSize, type: EMMessageBodyType.VOICE, ); From 64265f074ac29bb2f5d39124b60c097abf22e2bc Mon Sep 17 00:00:00 2001 From: dujiepeng <347302029@qq.com> Date: Thu, 20 Jan 2022 19:37:55 +0800 Subject: [PATCH 07/14] fix ios import messages error. --- ios/Classes/EMChatManagerWrapper.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ios/Classes/EMChatManagerWrapper.m b/ios/Classes/EMChatManagerWrapper.m index 472eeb4b..37fb7d4a 100644 --- a/ios/Classes/EMChatManagerWrapper.m +++ b/ios/Classes/EMChatManagerWrapper.m @@ -375,7 +375,7 @@ - (void)importMessages:(NSDictionary *)param result:(FlutterResult)result { __weak typeof(self) weakSelf = self; NSArray *dictAry = param[@"messages"]; - NSMutableArray *messages; + NSMutableArray *messages = [NSMutableArray array]; for (NSDictionary *dict in dictAry) { [messages addObject:[EMMessage fromJson:dict]]; } From a0237219730013d540c0a5ec262e912cd10b2efe Mon Sep 17 00:00:00 2001 From: dujiepeng <347302029@qq.com> Date: Fri, 21 Jan 2022 13:11:57 +0800 Subject: [PATCH 08/14] update --- lib/src/models/em_userInfo.dart | 96 ++++++++++++++++++++++++++------- 1 file changed, 76 insertions(+), 20 deletions(-) diff --git a/lib/src/models/em_userInfo.dart b/lib/src/models/em_userInfo.dart index 3cd62e65..441fb9f5 100644 --- a/lib/src/models/em_userInfo.dart +++ b/lib/src/models/em_userInfo.dart @@ -14,43 +14,99 @@ enum EMUserInfoType { class EMUserInfo { EMUserInfo(String aUserId); + EMUserInfo._private({ + required this.userId, + this.nickName, + this.avatarUrl, + this.mail, + this.phone, + this.gender, + this.sign, + this.birth, + this.ext, + }); + factory EMUserInfo.fromJson(Map map) { - EMUserInfo info = EMUserInfo.private(map['userId']); + EMUserInfo info = EMUserInfo._private( + userId: map['userId'], + ); info.nickName = map['nickName']; info.avatarUrl = map['avatarUrl']; info.mail = map['mail']; info.phone = map['phone']; - info.gender = map['gender']; + if (map.containsKey("gender")) { + if (map['gender'] as int != 0) { + info.gender = map['gender'] as int; + } + } info.sign = map['sign']; info.birth = map['birth']; info.ext = map['ext']; return info; } + EMUserInfo copyWith({ + String? nickName, + String? avatarUrl, + String? mail, + String? phone, + int? gender, + String? sign, + String? birth, + String? ext, + }) { + return EMUserInfo._private( + userId: this.userId, + nickName: nickName ?? this.nickName, + avatarUrl: avatarUrl ?? this.avatarUrl, + mail: mail ?? this.mail, + phone: phone ?? this.phone, + gender: gender ?? this.gender, + sign: sign ?? this.sign, + birth: birth ?? this.birth, + ext: ext ?? this.birth, + ); + } + Map toJson() { Map data = Map(); data['userId'] = userId; - data['nickName'] = nickName; - data['avatarUrl'] = avatarUrl; - data['mail'] = mail; - data['phone'] = phone; - data['gender'] = gender; - data['sign'] = sign; - data['birth'] = birth; - data['ext'] = ext; + if (nickName != null) { + data['nickName'] = nickName; + } + if (avatarUrl != null) { + data['avatarUrl'] = avatarUrl; + } + if (mail != null) { + data['mail'] = mail; + } + if (phone != null) { + data['phone'] = phone; + } + if (gender != null) { + data['gender'] = gender; + } + if (sign != null) { + data['sign'] = sign; + } + if (birth != null) { + data['birth'] = birth; + } + if (ext != null) { + data['ext'] = ext; + } + return data; } - EMUserInfo.private(this.userId); - String userId = ''; - String? nickName = ''; - String? avatarUrl = ''; - String? mail = ''; - String? phone = ''; - int? gender = 0; - String? sign = ''; - String? birth = ''; - String? ext = ''; + String? nickName; + String? avatarUrl; + String? mail; + String? phone; + int? gender; + String? sign; + String? birth; + String? ext; int expireTime = DateTime.now().millisecondsSinceEpoch; } From 52ca57539b8a5dc17aa3678607a92fd5acc01233 Mon Sep 17 00:00:00 2001 From: dujiepeng <347302029@qq.com> Date: Sat, 22 Jan 2022 19:30:38 +0800 Subject: [PATCH 09/14] fix group muteAll and block param error. --- lib/src/tools/em_extension.dart | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/src/tools/em_extension.dart b/lib/src/tools/em_extension.dart index 8ddaeed1..1ac2d527 100644 --- a/lib/src/tools/em_extension.dart +++ b/lib/src/tools/em_extension.dart @@ -8,6 +8,8 @@ extension MapExtension on Map { return this[key] == 0 ? false : true; } else if (this[key] is String) { return this[key].toString().length == 0 ? false : true; + } else if (this[key] is bool) { + return this[key]; } else { return false; } From b5bc741f0ccc5112e97a338cd42f487bcbd8de57 Mon Sep 17 00:00:00 2001 From: dujiepeng <347302029@qq.com> Date: Tue, 25 Jan 2022 16:22:17 +0800 Subject: [PATCH 10/14] update readme. --- CHANGELOG.md | 6 +++++- README.md | 23 ++++++++--------------- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 53a71009..66d199e1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,10 @@ ## NEXT -* 支持gcm推送点击 +## 3.8.3+4 +* 修复消息attribute类型变为bool类型; +* 修复群组免打扰属性不准; +* 修复ios importMessages方法bug; +* 构造文件消息提供设置文件大小属性; ## 3.8.3+3 * 修复安卓下resendMessage方法发送失败时不回调onError。 diff --git a/README.md b/README.md index f7beeb96..6cc3b55b 100644 --- a/README.md +++ b/README.md @@ -1656,25 +1656,18 @@ try{ #### 更新自己的用户属性 ```dart try { - - Map aMap = {'nickName': 'gagaga', 'mail': 'xxx@easemob.com'}; - EMUserInfo updateUserInfo = - await EMClient.getInstance.userInfoManager.updateOwnUserInfo(aMap); - } on EMError catch (e) { - print('操作失败,原因是: $e'); - } -``` -#### 更新自己的某一个用户属性 -```dart - try { - EMUserInfoType infoType = EMUserInfoType.EMUserInfoTypeBirth; - String updateValue = '2021.01.01'; - EMUserInfo updateUserInfo = await EMClient.getInstance.userInfoManager - .updateOwnUserInfoWithType(infoType, updateValue); + EMUserInfo info = EMUserInfo(EMClient.getInstance.currentUsername); + info.copyWith( + sign: "修改签名", + nickName: "用户属性昵称", + mail: "xxx@easemob.com", + ); + await EMClient.getInstance.userInfoManager.updateOwnUserInfo(info); } on EMError catch (e) { print('操作失败,原因是: $e'); } ``` + #### 获取多用户的用户属性 ```dart try { From f9db6802b4ab0e814764a61adf2acbbfa1d363ec Mon Sep 17 00:00:00 2001 From: dujiepeng <347302029@qq.com> Date: Wed, 26 Jan 2022 11:41:22 +0800 Subject: [PATCH 11/14] fix callback attrs transform error. --- lib/src/em_chat_room_manager.dart | 8 ++++---- lib/src/em_group_manager.dart | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/src/em_chat_room_manager.dart b/lib/src/em_chat_room_manager.dart index 108234e6..e4cba2f7 100644 --- a/lib/src/em_chat_room_manager.dart +++ b/lib/src/em_chat_room_manager.dart @@ -62,13 +62,13 @@ class EMChatRoomManager { break; case EMChatRoomEvent.ON_MUTE_LIST_ADDED: String roomId = event['roomId']; - List mutes = event['mutes']; + List mutes = List.from(event['mutes']); String? expireTime = event['expireTime']; listener.onMuteListAddedFromChatRoom(roomId, mutes, expireTime); break; case EMChatRoomEvent.ON_MUTE_LIST_REMOVED: String roomId = event['roomId']; - List mutes = event['mutes']; + List mutes = List.from(event['mutes']); listener.onMuteListRemovedFromChatRoom(roomId, mutes); break; case EMChatRoomEvent.ON_ADMIN_ADDED: @@ -94,12 +94,12 @@ class EMChatRoomManager { break; case EMChatRoomEvent.ON_WHITE_LIST_ADDED: String roomId = event['roomId']; - List members = event["whitelist"]; + List members = List.from(event["whitelist"]); listener.onWhiteListAddedFromChatRoom(roomId, members); break; case EMChatRoomEvent.ON_WHITE_LIST_REMOVED: String roomId = event['roomId']; - List members = event["whitelist"]; + List members = List.from(event["whitelist"]); listener.onWhiteListRemovedFromChatRoom(roomId, members); break; case EMChatRoomEvent.ON_ALL_MEMBER_MUTE_STATE_CHANGED: diff --git a/lib/src/em_group_manager.dart b/lib/src/em_group_manager.dart index 7efaed98..0b1d17b1 100644 --- a/lib/src/em_group_manager.dart +++ b/lib/src/em_group_manager.dart @@ -633,13 +633,13 @@ class EMGroupManager { break; case EMGroupChangeEvent.ON_MUTE_LIST_ADDED: String groupId = map['groupId']; - List mutes = map['mutes']; + List mutes = List.from(map['mutes']); int? muteExpire = map['muteExpire']; listener.onMuteListAddedFromGroup(groupId, mutes, muteExpire); break; case EMGroupChangeEvent.ON_MUTE_LIST_REMOVED: String groupId = map['groupId']; - List mutes = map['mutes']; + List mutes = List.from(map['mutes']); listener.onMuteListRemovedFromGroup(groupId, mutes); break; case EMGroupChangeEvent.ON_ADMIN_ADDED: @@ -686,12 +686,12 @@ class EMGroupManager { break; case EMGroupChangeEvent.ON_WHITE_LIST_ADDED: String groupId = map["groupId"]; - List members = map['whitelist']; + List members = List.from(map['whitelist']); listener.onWhiteListAddedFromGroup(groupId, members); break; case EMGroupChangeEvent.ON_WHITE_LIST_REMOVED: String groupId = map["groupId"]; - List members = map['whitelist']; + List members = List.from(map['whitelist']); listener.onWhiteListRemovedFromGroup(groupId, members); break; case EMGroupChangeEvent.ON_ALL_MEMBER_MUTE_STATE_CHANGED: From 36198cfbe44404d6d6a73d98a4a4466e1721dc83 Mon Sep 17 00:00:00 2001 From: dujiepeng <347302029@qq.com> Date: Fri, 28 Jan 2022 11:53:36 +0800 Subject: [PATCH 12/14] rename files. --- CHANGELOG.md | 5 +- README.md | 2 +- lib/src/em_group_manager.dart | 6 +-- lib/src/em_listeners.dart | 89 ++++++++++++++++++++++++++++++++++- 4 files changed, 95 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 66d199e1..0e5cbc65 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,10 +4,13 @@ * 修复消息attribute类型变为bool类型; * 修复群组免打扰属性不准; * 修复ios importMessages方法bug; +* 修复群、聊天室禁言时不执行回调的bug; * 构造文件消息提供设置文件大小属性; +* 修改`EMGroupChangeListener` 为 `EMGroupEventListener` ## 3.8.3+3 -* 修复安卓下resendMessage方法发送失败时不回调onError。 +* 修复安卓下resendMessage方法发送失败时不回调onError; +* 修复fetchChatRoomMembers返回类型错误; ## 3.8.3+2 * 增加群组已读回执; diff --git a/README.md b/README.md index 6cc3b55b..89ae1bde 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ Demo中使用的音视频是针对声网音视频封装的[EaseCallKit](https:// 1. 修改 `pubspec.yaml`; ```dart dependencies: - im_flutter_sdk: ^3.8.3+3 + im_flutter_sdk: ^3.8.3+4 ``` 2. 执行`flutter pub get`; diff --git a/lib/src/em_group_manager.dart b/lib/src/em_group_manager.dart index 0b1d17b1..33f15c1c 100644 --- a/lib/src/em_group_manager.dart +++ b/lib/src/em_group_manager.dart @@ -555,12 +555,12 @@ class EMGroupManager { } /// @nodoc addGroupChangeListener - Adds [listener] to be aware of group change events. - void addGroupChangeListener(EMGroupChangeListener listener) { + void addGroupChangeListener(EMGroupEventListener listener) { _groupChangeListeners.add(listener); } /// @nodoc removeGroupChangeListener - Remove [listener] from the listener list. - void removeGroupChangeListener(EMGroupChangeListener listener) { + void removeGroupChangeListener(EMGroupEventListener listener) { if (_groupChangeListeners.contains(listener)) { _groupChangeListeners.remove(listener); } @@ -568,7 +568,7 @@ class EMGroupManager { /// @nodoc Future _onGroupChanged(Map? map) async { - for (EMGroupChangeListener listener in _groupChangeListeners) { + for (EMGroupEventListener listener in _groupChangeListeners) { var type = map!['type']; switch (type) { case EMGroupChangeEvent.ON_INVITATION_RECEIVED: diff --git a/lib/src/em_listeners.dart b/lib/src/em_listeners.dart index b0140e5f..d58b0c9d 100644 --- a/lib/src/em_listeners.dart +++ b/lib/src/em_listeners.dart @@ -11,11 +11,18 @@ abstract class EMConnectionListener { /// @nodoc abstract class EMMultiDeviceListener { /// @nodoc - void onContactEvent(EMContactGroupEvent? event, String? target, String? ext); + void onContactEvent( + EMContactGroupEvent? event, + String? target, + String? ext, + ); /// @nodoc void onGroupEvent( - EMContactGroupEvent? event, String? target, List? usernames); + EMGroupChangeEvent? event, + String? target, + List? usernames, + ); } abstract class EMCustomListener { @@ -164,6 +171,7 @@ class EMGroupChangeEvent { "onAllMemberMuteStateChanged"; } +@Deprecated('Use EMGroupEventListener.') abstract class EMGroupChangeListener { /// id是[groupId], 名称是[groupName]的群邀请被[inviter]拒绝,理由是[reason] void onInvitationReceivedFromGroup( @@ -240,3 +248,80 @@ abstract class EMGroupChangeListener { /// 群组禁言状态发生变化 void onAllGroupMemberMuteStateChanged(String groupId, bool isAllMuted); } + +abstract class EMGroupEventListener { + /// id是[groupId], 名称是[groupName]的群邀请被[inviter]拒绝,理由是[reason] + void onInvitationReceivedFromGroup( + String groupId, String? groupName, String inviter, String? reason); + + /// 收到用户[applicant]申请加入id是[groupId], 名称是[groupName]的群,原因是[reason] + void onRequestToJoinReceivedFromGroup( + String groupId, String? groupName, String applicant, String? reason); + + /// 入群申请被同意 + void onRequestToJoinAcceptedFromGroup( + String groupId, String? groupName, String accepter); + + /// 入群申请被拒绝 + void onRequestToJoinDeclinedFromGroup( + String groupId, String? groupName, String decliner, String? reason); + + /// 入群邀请被同意 + void onInvitationAcceptedFromGroup( + String groupId, String invitee, String? reason); + + /// 入群邀请被拒绝 + void onInvitationDeclinedFromGroup( + String groupId, String invitee, String? reason); + + /// 被移出群组 + void onUserRemovedFromGroup(String groupId, String? groupName); + + /// 群组解散 + void onGroupDestroyed(String groupId, String? groupName); + + /// @nodoc 自动同意加群 + void onAutoAcceptInvitationFromGroup( + String groupId, String inviter, String? inviteMessage); + + /// 群禁言列表增加 + void onMuteListAddedFromGroup( + String groupId, List mutes, int? muteExpire); + + /// 群禁言列表减少 + void onMuteListRemovedFromGroup(String groupId, List mutes); + + /// 群管理增加 + void onAdminAddedFromGroup(String groupId, String admin); + + /// 群管理被移除 + void onAdminRemovedFromGroup(String groupId, String admin); + + /// 群所有者变更 + void onOwnerChangedFromGroup( + String groupId, String newOwner, String oldOwner); + + /// 有用户加入群 + void onMemberJoinedFromGroup(String groupId, String member); + + /// 有用户离开群 + void onMemberExitedFromGroup(String groupId, String member); + + /// 群公告变更 + void onAnnouncementChangedFromGroup(String groupId, String announcement); + + /// 群共享文件增加 + void onSharedFileAddedFromGroup(String groupId, EMGroupSharedFile sharedFile); + + /// 群共享文件被删除 + void onSharedFileDeletedFromGroup(String groupId, String fileId); + + /// 有用户被添加到群组白名单 + void onWhiteListAddedFromGroup(String groupId, List members); + + /// 有用户从群组白名单被移除 + void onWhiteListRemovedFromGroup(String groupId, List members); + + /// 群组禁言状态发生变化 + void onAllGroupMemberMuteStateChanged(String groupId, bool isAllMuted); +} From 401b7370cea0bdff2c17b58e0029499fea63ce6a Mon Sep 17 00:00:00 2001 From: dujiepeng <347302029@qq.com> Date: Fri, 28 Jan 2022 20:48:50 +0800 Subject: [PATCH 13/14] update --- lib/src/em_listeners.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/src/em_listeners.dart b/lib/src/em_listeners.dart index d58b0c9d..db97ca63 100644 --- a/lib/src/em_listeners.dart +++ b/lib/src/em_listeners.dart @@ -19,7 +19,7 @@ abstract class EMMultiDeviceListener { /// @nodoc void onGroupEvent( - EMGroupChangeEvent? event, + EMContactGroupEvent? event, String? target, List? usernames, ); From 12baac9d17a3be3f4efb9dfcacadb4c0967d9d93 Mon Sep 17 00:00:00 2001 From: dujiepeng <347302029@qq.com> Date: Fri, 28 Jan 2022 20:52:11 +0800 Subject: [PATCH 14/14] update --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e5cbc65..bbde3043 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ * 修复群组免打扰属性不准; * 修复ios importMessages方法bug; * 修复群、聊天室禁言时不执行回调的bug; +* 修复下载方法不执行callback; * 构造文件消息提供设置文件大小属性; * 修改`EMGroupChangeListener` 为 `EMGroupEventListener`