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 cdbcc43..90645b7 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 @@ -322,6 +322,15 @@ public class MessageManager extends BaseManager { value(methodCall, "localEx") ); } + + public void setAppBadge(MethodCall methodCall, MethodChannel.Result result) { + Open_im_sdk.setAppBadge( + new OnBaseListener(result, methodCall), + value(methodCall, "operationID"), + value(methodCall, "count") + ); + } + public void sendMessageNotOss(MethodCall methodCall, MethodChannel.Result result) { Open_im_sdk.sendMessageNotOss( new OnMsgSendListener(result, methodCall), diff --git a/ios/Classes/Module/MessageManager.swift b/ios/Classes/Module/MessageManager.swift index 6618cee..3b493c9 100644 --- a/ios/Classes/Module/MessageManager.swift +++ b/ios/Classes/Module/MessageManager.swift @@ -45,7 +45,8 @@ public class MessageManager: BaseServiceManager { self["findMessageList"] = findMessageList self["setMessageLocalEx"] = setMessageLocalEx - + self["setAppBadge"] = setAppBadge + self["sendMessageNotOss"] = sendMessageNotOss self["createImageMessageByURL"] = createImageMessageByURL self["createSoundMessageByURL"] = createSoundMessageByURL @@ -219,6 +220,10 @@ public class MessageManager: BaseServiceManager { func setMessageLocalEx(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ Open_im_sdkSetMessageLocalEx(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "conversationID"], methodCall[string: "clientMsgID"], methodCall[string: "localEx"]) } + + func setAppBadge(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ + Open_im_sdkSetAppBadge(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[int64: "count"]) + } func sendMessageNotOss(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ let sendMsgProgressListener: SendMsgProgressListener = SendMsgProgressListener(channel: channel,result: result,methodCall: methodCall) diff --git a/lib/src/enum/allow_type.dart b/lib/src/enum/allow_type.dart new file mode 100644 index 0000000..c8e86e6 --- /dev/null +++ b/lib/src/enum/allow_type.dart @@ -0,0 +1,4 @@ +class AllowType { + static const allow = 0; + static const notAllow = 1; +} \ No newline at end of file diff --git a/lib/src/enum/group_member_filter.dart b/lib/src/enum/group_member_filter.dart new file mode 100644 index 0000000..6675cb5 --- /dev/null +++ b/lib/src/enum/group_member_filter.dart @@ -0,0 +1,14 @@ +/// Group Member Filter +class GroupMemberFilter { + static const all = 0; + + static const owner = 1; + + static const admin = 2; + + static const member = 3; + + static const adminAndMember = 4; + + static const superAndAdmin = 4; +} diff --git a/lib/src/enum/group_status.dart b/lib/src/enum/group_status.dart new file mode 100644 index 0000000..a968848 --- /dev/null +++ b/lib/src/enum/group_status.dart @@ -0,0 +1,7 @@ +/// Group Status +class GroupStatus { + static const normal = 0; + static const baned = 1; + static const dismissed = 2; + static const muted = 3; +} diff --git a/lib/src/enum/join_source.dart b/lib/src/enum/join_source.dart new file mode 100644 index 0000000..16876a1 --- /dev/null +++ b/lib/src/enum/join_source.dart @@ -0,0 +1,5 @@ +class JoinSource { + static const invited = 2; + static const search = 3; + static const QRCode = 4; +} \ No newline at end of file diff --git a/lib/src/enum/receive_message_opt.dart b/lib/src/enum/receive_message_opt.dart new file mode 100644 index 0000000..573bee0 --- /dev/null +++ b/lib/src/enum/receive_message_opt.dart @@ -0,0 +1,5 @@ +class ReceiveMessageOpt { + static const receive = 0; + static const notReceive = 1; + static const notNotify = 2; +} \ No newline at end of file diff --git a/lib/src/enum/relationship.dart b/lib/src/enum/relationship.dart new file mode 100644 index 0000000..486f81a --- /dev/null +++ b/lib/src/enum/relationship.dart @@ -0,0 +1,4 @@ +class AllowType { + static const black = 0; + static const friend = 1; +} \ No newline at end of file diff --git a/lib/src/manager/im_group_manager.dart b/lib/src/manager/im_group_manager.dart index 713154c..fdce3b0 100644 --- a/lib/src/manager/im_group_manager.dart +++ b/lib/src/manager/im_group_manager.dart @@ -33,8 +33,7 @@ class GroupManager { 'reason': reason, "operationID": Utils.checkOperationID(operationID), })) - .then((value) => - Utils.toList(value, (map) => GroupInviteResult.fromJson(map))); + .then((value) => Utils.toList(value, (map) => GroupInviteResult.fromJson(map))); /// Remove group members /// [groupID] Group ID @@ -55,8 +54,7 @@ class GroupManager { 'reason': reason, "operationID": Utils.checkOperationID(operationID), })) - .then((value) => - Utils.toList(value, (map) => GroupInviteResult.fromJson(map))); + .then((value) => Utils.toList(value, (map) => GroupInviteResult.fromJson(map))); /// Query group member information /// [groupID] Group ID @@ -74,8 +72,7 @@ class GroupManager { 'userIDList': userIDList, "operationID": Utils.checkOperationID(operationID), })) - .then((value) => - Utils.toList(value, (map) => GroupMembersInfo.fromJson(map))); + .then((value) => Utils.toList(value, (map) => GroupMembersInfo.fromJson(map))); /// Paginate and retrieve the group member list /// [groupID] Group ID @@ -99,8 +96,7 @@ class GroupManager { 'count': count, 'operationID': Utils.checkOperationID(operationID), })) - .then((value) => - Utils.toList(value, (map) => GroupMembersInfo.fromJson(map))); + .then((value) => Utils.toList(value, (map) => GroupMembersInfo.fromJson(map))); /// Paginate and retrieve the group member list as a map /// [groupID] Group ID @@ -181,36 +177,17 @@ class GroupManager { 'ownerUserID': ownerUserID, 'operationID': Utils.checkOperationID(operationID), })) - .then( - (value) => Utils.toObj(value, (map) => GroupInfo.fromJson(map))); + .then((value) => Utils.toObj(value, (map) => GroupInfo.fromJson(map))); /// Edit group information - Future setGroupInfo({ - required String groupID, - String? groupName, - String? notification, - String? introduction, - String? faceURL, - String? ex, - int? needVerification, - int? lookMemberInfo, - int? applyMemberFriend, + Future setGroupInfo( + GroupInfo groupInfo, { String? operationID, }) => _channel.invokeMethod( 'setGroupInfo', _buildParam({ - 'groupInfo': { - "groupID": groupID, - "groupName": groupName, - "notification": notification, - "introduction": introduction, - "faceURL": faceURL, - "ex": ex, - 'needVerification': needVerification, - 'lookMemberInfo': lookMemberInfo, - 'applyMemberFriend': applyMemberFriend, - }, + 'groupInfo': groupInfo.toJson(), 'operationID': Utils.checkOperationID(operationID), })); @@ -226,8 +203,7 @@ class GroupManager { 'groupIDList': groupIDList, 'operationID': Utils.checkOperationID(operationID), })) - .then( - (value) => Utils.toList(value, (map) => GroupInfo.fromJson(map))); + .then((value) => Utils.toList(value, (map) => GroupInfo.fromJson(map))); /// Apply to join a group, requiring approval from an administrator or the group. /// [joinSource] 2: Invited, 3: Searched, 4: Using a QR code @@ -275,28 +251,22 @@ class GroupManager { })); /// Handle group membership applications received as a group owner or administrator - Future> getGroupApplicationListAsRecipient( - {String? operationID}) => - _channel - .invokeMethod( - 'getGroupApplicationListAsRecipient', - _buildParam({ - 'operationID': Utils.checkOperationID(operationID), - })) - .then((value) => - Utils.toList(value, (map) => GroupApplicationInfo.fromJson(map))); + Future> getGroupApplicationListAsRecipient({String? operationID}) => _channel + .invokeMethod( + 'getGroupApplicationListAsRecipient', + _buildParam({ + 'operationID': Utils.checkOperationID(operationID), + })) + .then((value) => Utils.toList(value, (map) => GroupApplicationInfo.fromJson(map))); /// Get the list of group membership applications sent by the user - Future> getGroupApplicationListAsApplicant( - {String? operationID}) => - _channel - .invokeMethod( - 'getGroupApplicationListAsApplicant', - _buildParam({ - 'operationID': Utils.checkOperationID(operationID), - })) - .then((value) => - Utils.toList(value, (map) => GroupApplicationInfo.fromJson(map))); + Future> getGroupApplicationListAsApplicant({String? operationID}) => _channel + .invokeMethod( + 'getGroupApplicationListAsApplicant', + _buildParam({ + 'operationID': Utils.checkOperationID(operationID), + })) + .then((value) => Utils.toList(value, (map) => GroupApplicationInfo.fromJson(map))); /// Accept a group membership application as an administrator or group owner /// Note: Membership applications require approval from administrators or the group. @@ -422,8 +392,7 @@ class GroupManager { }, 'operationID': Utils.checkOperationID(operationID), })) - .then( - (value) => Utils.toList(value, (map) => GroupInfo.fromJson(map))); + .then((value) => Utils.toList(value, (map) => GroupInfo.fromJson(map))); /// Set group member role /// [groupID] Group ID @@ -451,7 +420,7 @@ class GroupManager { int count = 0, int joinTimeBegin = 0, int joinTimeEnd = 0, - List excludeUserIDList = const [], + List filterUserIDList = const [], String? operationID, }) => _channel @@ -463,11 +432,10 @@ class GroupManager { 'count': count, 'joinTimeBegin': joinTimeBegin, 'joinTimeEnd': joinTimeEnd, - 'excludeUserIDList': excludeUserIDList, + 'excludeUserIDList': filterUserIDList, 'operationID': Utils.checkOperationID(operationID), })) - .then((value) => - Utils.toList(value, (map) => GroupMembersInfo.fromJson(map))); + .then((value) => Utils.toList(value, (map) => GroupMembersInfo.fromJson(map))); /// Set group verification for joining /// [groupID] Group ID @@ -530,8 +498,7 @@ class GroupManager { 'groupID': groupID, 'operationID': Utils.checkOperationID(operationID), })) - .then((value) => - Utils.toList(value, (map) => GroupMembersInfo.fromJson(map))); + .then((value) => Utils.toList(value, (map) => GroupMembersInfo.fromJson(map))); /// Search for group members /// [groupID] Group ID @@ -563,8 +530,7 @@ class GroupManager { }, 'operationID': Utils.checkOperationID(operationID), })) - .then((value) => - Utils.toList(value, (map) => GroupMembersInfo.fromJson(map))); + .then((value) => Utils.toList(value, (map) => GroupMembersInfo.fromJson(map))); /// Query a group /// [groupID] Group ID @@ -602,17 +568,13 @@ class GroupManager { Future setGroupMemberInfo({ required String groupID, required String userID, - String? ex, + required GroupMembersInfo groupMembersInfo, String? operationID, }) => _channel.invokeMethod( 'setGroupMemberInfo', _buildParam({ - 'info': { - 'groupID': groupID, - 'userID': userID, - 'ex': ex, - }, + 'info': groupMembersInfo.toJson(), 'operationID': Utils.checkOperationID(operationID), })); static Map _buildParam(Map param) { diff --git a/lib/src/manager/im_message_manager.dart b/lib/src/manager/im_message_manager.dart index db7dbff..d1dbee7 100644 --- a/lib/src/manager/im_message_manager.dart +++ b/lib/src/manager/im_message_manager.dart @@ -777,6 +777,17 @@ class MessageManager { })); } + Future setAppBadge(int count, { + String? operationID, + }) { + return _channel.invokeMethod( + 'setAppBadge', + _buildParam({ + 'count': count, + 'operationID': Utils.checkOperationID(operationID), + })); + } + static Map _buildParam(Map param) { param["ManagerName"] = "messageManager"; return param;