diff --git a/CHANGELOG.md b/CHANGELOG.md index 373f768..988608d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +## 2.3.0+1 + +- Fix bug +- enum class MessageType new add customMsgNotTriggerConversation +- enum class MessageType new add customMsgOnlineOnly +- class IMManager new add updateFcmToken method +- class MessageManager new add findMessageList method +- initSDK method add encryptionKey param + ## 2.3.0 - Fix bug diff --git a/android/src/main/java/io/openim/flutter_openim_sdk/manager/IMManager.java b/android/src/main/java/io/openim/flutter_openim_sdk/manager/IMManager.java index a857e7d..7f590cf 100644 --- a/android/src/main/java/io/openim/flutter_openim_sdk/manager/IMManager.java +++ b/android/src/main/java/io/openim/flutter_openim_sdk/manager/IMManager.java @@ -53,4 +53,12 @@ public class IMManager extends BaseManager { value(methodCall, "obj") ); } + + public void updateFcmToken(MethodCall methodCall, MethodChannel.Result result) { + Open_im_sdk.updateFcmToken( + new OnBaseListener(result, methodCall), + value(methodCall, "operationID"), + value(methodCall, "fcmToken") + ); + } } diff --git a/android/src/main/java/io/openim/flutter_openim_sdk/manager/MessageManager.java b/android/src/main/java/io/openim/flutter_openim_sdk/manager/MessageManager.java index 241b141..e020b3c 100644 --- a/android/src/main/java/io/openim/flutter_openim_sdk/manager/MessageManager.java +++ b/android/src/main/java/io/openim/flutter_openim_sdk/manager/MessageManager.java @@ -406,4 +406,11 @@ public class MessageManager extends BaseManager { ); } + public void findMessageList(MethodCall methodCall, MethodChannel.Result result) { + Open_im_sdk.findMessageList( + new OnBaseListener(result, methodCall), + value(methodCall, "operationID"), + jsonValue(methodCall, "options") + ); + } } diff --git a/ios/Classes/Module/IMManager.swift b/ios/Classes/Module/IMManager.swift index 57dfa8f..09d3f3b 100644 --- a/ios/Classes/Module/IMManager.swift +++ b/ios/Classes/Module/IMManager.swift @@ -10,6 +10,8 @@ public class IMMananger: BaseServiceManager { self["logout"] = logout self["getLoginStatus"] = getLoginStatus self["wakeUp"] = wakeUp + self["uploadImage"] = uploadImage + self["updateFcmToken"] = updateFcmToken } func initSDK(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ @@ -35,6 +37,10 @@ public class IMMananger: BaseServiceManager { func uploadImage(methodCall: FlutterMethodCall, result: @escaping FlutterResult) { Open_im_sdkUploadImage(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "path"], methodCall[string: "token"], methodCall[string: "obj"]) } + + func updateFcmToken(methodCall: FlutterMethodCall, result: @escaping FlutterResult) { + Open_im_sdkUpdateFcmToken(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "fcmToken"]) + } } public class ConnListener: NSObject, Open_im_sdk_callbackOnConnListenerProtocol { diff --git a/ios/Classes/Module/MessageManager.swift b/ios/Classes/Module/MessageManager.swift index 7e708bb..a5823f8 100644 --- a/ios/Classes/Module/MessageManager.swift +++ b/ios/Classes/Module/MessageManager.swift @@ -46,6 +46,7 @@ public class MessageManager: BaseServiceManager { self["getHistoryMessageListReverse"] = getHistoryMessageListReverse self["newRevokeMessage"] = newRevokeMessage self["getAdvancedHistoryMessageList"] = getAdvancedHistoryMessageList + self["findMessageList"] = findMessageList } func setAdvancedMsgListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ @@ -223,6 +224,10 @@ public class MessageManager: BaseServiceManager { func getAdvancedHistoryMessageList(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ Open_im_sdkGetAdvancedHistoryMessageList(BaseCallback(result: result), methodCall[string: "operationID"], methodCall.toJsonString()) } + + func findMessageList(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ + Open_im_sdkFindMessageList(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "options"]) + } } public class SendMsgProgressListener: NSObject, Open_im_sdk_callbackSendMsgCallBackProtocol { diff --git a/lib/src/enum/message_type.dart b/lib/src/enum/message_type.dart index 815fb37..21caf6a 100644 --- a/lib/src/enum/message_type.dart +++ b/lib/src/enum/message_type.dart @@ -48,6 +48,10 @@ class MessageType { /// 高级撤回 static const advancedRevoke = 118; + static const customMsgNotTriggerConversation = 119; + + static const customMsgOnlineOnly = 120; + /// 通知类型 static const notificationBegin = 1000; diff --git a/lib/src/manager/im_manager.dart b/lib/src/manager/im_manager.dart index 6aeede4..a059993 100644 --- a/lib/src/manager/im_manager.dart +++ b/lib/src/manager/im_manager.dart @@ -309,6 +309,7 @@ class IMManager { required OnConnectListener listener, int logLevel = 6, String objectStorage = 'cos', + String? encryptionKey, String? operationID, }) { this._connectListener = listener; @@ -323,6 +324,7 @@ class IMManager { "data_dir": dataDir, "log_level": logLevel, "object_storage": objectStorage, + "encryption_key": encryptionKey, "operationID": Utils.checkOperationID(operationID), }, )); @@ -404,6 +406,19 @@ class IMManager { 'operationID': Utils.checkOperationID(operationID), })); + /// 更新firebase客户端注册token + /// [fcmToken] firebase token + Future updateFcmToken({ + required String fcmToken, + String? operationID, + }) => + _channel.invokeMethod( + 'updateFcmToken', + _buildParam({ + 'fcmToken': fcmToken, + 'operationID': Utils.checkOperationID(operationID), + })); + static Map _buildParam(Map param) { param["ManagerName"] = "imManager"; return param; diff --git a/lib/src/manager/im_message_manager.dart b/lib/src/manager/im_message_manager.dart index 5943549..7cf765e 100644 --- a/lib/src/manager/im_message_manager.dart +++ b/lib/src/manager/im_message_manager.dart @@ -731,6 +731,27 @@ class MessageManager { .then((value) => Utils.toObj(value, (map) => AdvancedMessage.fromJson(map))); + /// 查找消息详细 + /// [conversationID] 会话id + /// [clientMsgIDList] 消息id列表 + Future findMessageList({ + required String conversationID, + required List clientMsgIDList, + String? operationID, + }) => + _channel + .invokeMethod( + 'findMessageList', + _buildParam({ + 'options': { + "conversationID": conversationID, + "clientMsgIDList": clientMsgIDList, + }, + 'operationID': Utils.checkOperationID(operationID), + })) + .then((value) => + Utils.toObj(value, (map) => SearchResult.fromJson(value))); + static Map _buildParam(Map param) { param["ManagerName"] = "messageManager"; return param; diff --git a/lib/src/models/group_info.dart b/lib/src/models/group_info.dart index 5179127..7011157 100644 --- a/lib/src/models/group_info.dart +++ b/lib/src/models/group_info.dart @@ -119,6 +119,16 @@ class GroupInfo { int get sessionType => groupType == GroupType.general ? ConversationType.group : ConversationType.superGroup; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is GroupInfo && + runtimeType == other.runtimeType && + groupID == other.groupID; + + @override + int get hashCode => groupID.hashCode; } /// 群成员信息 @@ -209,12 +219,13 @@ class GroupMembersInfo { @override bool operator ==(Object other) => identical(this, other) || - other is GroupMembersInfo && + other is GroupMembersInfo && runtimeType == other.runtimeType && + groupID == other.groupID && userID == other.userID; @override - int get hashCode => userID.hashCode; + int get hashCode => groupID.hashCode ^ userID.hashCode; } /// 群成员角色