From e8cb9d5662adaa0c0aa602064eb34e31c5a82a43 Mon Sep 17 00:00:00 2001 From: hrxiang Date: Tue, 20 Jul 2021 20:11:10 +0800 Subject: [PATCH] init --- lib/src/manager/im_conversation_manager.dart | 106 +++++++----- lib/src/manager/im_friendship_manager.dart | 4 +- lib/src/manager/im_group_manager.dart | 20 +-- lib/src/manager/im_manager.dart | 9 +- lib/src/manager/im_message_manager.dart | 170 +++++++++++++++++-- 5 files changed, 229 insertions(+), 80 deletions(-) diff --git a/lib/src/manager/im_conversation_manager.dart b/lib/src/manager/im_conversation_manager.dart index 82d5824..162055c 100644 --- a/lib/src/manager/im_conversation_manager.dart +++ b/lib/src/manager/im_conversation_manager.dart @@ -9,62 +9,78 @@ class ConversationManager { ConversationManager(this._channel); - void setConversationListener(ConversationListener listener) { + Future setConversationListener(ConversationListener listener) { this.conversationListener = listener; - _channel.invokeMethod('setConversationListener', _buildParam({})); + return _channel.invokeMethod('setConversationListener', _buildParam({})); } - Future> getAllConversationList() { - return _channel - .invokeMethod('getAllConversationList', _buildParam({})) - .then((value) => _toList(value)); - } + Future> getAllConversationList() => _channel + .invokeMethod('getAllConversationList', _buildParam({})) + .then((value) => _toList(value)); /// sourceID: userID(single chat) ,groupID(group chat) /// sessionType: 1(single chat) ,2(group chat) - Future getSingleConversation( - {required String sourceID, required String sessionType}) { - return _channel - .invokeMethod('getOneConversation', - _buildParam({"sourceID": sourceID, "sessionType": sessionType})) - .then((value) => _toObj(value)); - } + Future getSingleConversation({ + required String sourceID, + required String sessionType, + }) => + _channel + .invokeMethod( + 'getOneConversation', + _buildParam({ + "sourceID": sourceID, + "sessionType": sessionType, + })) + .then((value) => _toObj(value)); /// ["single_1234","group_3434"] - Future> getMultipleConversation( - {required List conversationIDList}) { - return _channel - .invokeMethod('getMultipleConversation', - _buildParam({"conversationIDList": conversationIDList})) - .then((value) => _toList(value)); - } + Future> getMultipleConversation({ + required List conversationIDList, + }) => + _channel + .invokeMethod( + 'getMultipleConversation', + _buildParam({ + "conversationIDList": conversationIDList, + })) + .then((value) => _toList(value)); - void deleteConversation({required String conversationID}) { - _channel - .invokeMethod('deleteConversation', - _buildParam({"conversationID": conversationID})) - .then((value) => _printValue(value)); - } + Future deleteConversation({ + required String conversationID, + }) => + _channel + .invokeMethod( + 'deleteConversation', + _buildParam({ + "conversationID": conversationID, + })) + .then((value) => _printValue(value)); - void setConversationDraft( - {required String conversationID, required String draftText}) { - _channel - .invokeMethod( - 'setConversationDraft', - _buildParam( - {"conversationID": conversationID, "draftText": draftText})) - .then((value) => _printValue(value)); - } + Future setConversationDraft({ + required String conversationID, + required String draftText, + }) => + _channel + .invokeMethod( + 'setConversationDraft', + _buildParam({ + "conversationID": conversationID, + "draftText": draftText, + })) + .then((value) => _printValue(value)); - void pinConversation( - {required String conversationID, required bool isPinned}) { - _channel - .invokeMethod( - 'pinConversation', - _buildParam( - {"conversationID": conversationID, "isPinned": isPinned})) - .then((value) => _printValue(value)); - } + Future pinConversation({ + required String conversationID, + required bool isPinned, + }) => + _channel + .invokeMethod( + 'pinConversation', + _buildParam({ + "conversationID": conversationID, + "isPinned": isPinned, + })) + .then((value) => _printValue(value)); static Map _buildParam(Map param) { param["ManagerName"] = "conversationManager"; diff --git a/lib/src/manager/im_friendship_manager.dart b/lib/src/manager/im_friendship_manager.dart index 6f61d2c..3519b01 100644 --- a/lib/src/manager/im_friendship_manager.dart +++ b/lib/src/manager/im_friendship_manager.dart @@ -9,9 +9,9 @@ class FriendshipManager { FriendshipManager(this._channel); - void setFriendshipListener(FriendshipListener listener) { + Future setFriendshipListener(FriendshipListener listener) { this.friendshipListener = listener; - _channel.invokeMethod('setFriendListener', _buildParam({})); + return _channel.invokeMethod('setFriendListener', _buildParam({})); } Future> getFriendsInfo({required List uidList}) { diff --git a/lib/src/manager/im_group_manager.dart b/lib/src/manager/im_group_manager.dart index ad5a935..6dcd97c 100644 --- a/lib/src/manager/im_group_manager.dart +++ b/lib/src/manager/im_group_manager.dart @@ -10,9 +10,9 @@ class GroupManager { GroupManager(this._channel); - void setGroupListener(GroupListener listener) { + Future setGroupListener(GroupListener listener) { this.groupListener = listener; - _channel.invokeMethod('setGroupListener', _buildParam({})); + return _channel.invokeMethod('setGroupListener', _buildParam({})); } Future> inviteUserToGroup({ @@ -195,20 +195,20 @@ class GroupManager { })); } - void forceSyncApplyGroupRequest() { - _channel.invokeMethod('forceSyncApplyGroupRequest', _buildParam({})); + Future forceSyncApplyGroupRequest() { + return _channel.invokeMethod('forceSyncApplyGroupRequest', _buildParam({})); } - void forceSyncGroupRequest() { - _channel.invokeMethod('forceSyncGroupRequest', _buildParam({})); + Future forceSyncGroupRequest() { + return _channel.invokeMethod('forceSyncGroupRequest', _buildParam({})); } - void forceSyncJoinedGroup() { - _channel.invokeMethod('forceSyncJoinedGroup', _buildParam({})); + Future forceSyncJoinedGroup() { + return _channel.invokeMethod('forceSyncJoinedGroup', _buildParam({})); } - void forceSyncJoinedGroupMember() { - _channel.invokeMethod('forceSyncJoinedGroupMember', _buildParam({})); + Future forceSyncJoinedGroupMember() { + return _channel.invokeMethod('forceSyncJoinedGroupMember', _buildParam({})); } static Map _buildParam(Map param) { diff --git a/lib/src/manager/im_manager.dart b/lib/src/manager/im_manager.dart index 2f5f79c..9d69271 100644 --- a/lib/src/manager/im_manager.dart +++ b/lib/src/manager/im_manager.dart @@ -13,8 +13,7 @@ class IMManager { late SignalingManager signalingManager; late InitSDKListener _initSDKListener; late String uid; - - // late UserInfo userInfo; + late UserInfo uInfo; IMManager(this._channel) { conversationManager = ConversationManager(_channel); @@ -34,8 +33,8 @@ class IMManager { dynamic data = call.arguments['data']; switch (type) { case 'onSelfInfoUpdated': - _initSDKListener - .onSelfInfoUpdated(UserInfo.fromJson(_formatJson(data))); + uInfo = UserInfo.fromJson(_formatJson(data)); + _initSDKListener.onSelfInfoUpdated(uInfo); break; case 'onConnectFailed': int? errCode = call.arguments['errCode']; @@ -303,7 +302,7 @@ class IMManager { } Future getLoginUserInfo() { - return getUsersInfo([uid]).then((list) => list[0]); + return getUsersInfo([uid]).then((list) => uInfo = list[0]); } Future setSelfInfo(UserInfo info) { diff --git a/lib/src/manager/im_message_manager.dart b/lib/src/manager/im_message_manager.dart index b0dd438..684feb8 100644 --- a/lib/src/manager/im_message_manager.dart +++ b/lib/src/manager/im_message_manager.dart @@ -1,4 +1,5 @@ import 'dart:convert'; +import 'dart:io'; import 'package:flutter/services.dart'; import 'package:flutter_openim_sdk/flutter_openim_sdk.dart'; @@ -10,16 +11,22 @@ class MessageManager { MessageManager(this._channel); - void addAdvancedMsgListener(AdvancedMsgListener listener) { + Future addAdvancedMsgListener(AdvancedMsgListener listener) { advancedMsgListeners.add(listener); - _channel.invokeMethod( - 'addAdvancedMsgListener', _buildParam({'id': listener.id})); + return _channel.invokeMethod( + 'addAdvancedMsgListener', + _buildParam({ + 'id': listener.id, + })); } - void removeAdvancedMsgListener(AdvancedMsgListener listener) { + Future removeAdvancedMsgListener(AdvancedMsgListener listener) { advancedMsgListeners.remove(listener); - _channel.invokeMethod( - 'removeAdvancedMsgListener', _buildParam({'id': listener.id})); + return _channel.invokeMethod( + 'removeAdvancedMsgListener', + _buildParam({ + 'id': listener.id, + })); } void setMsgSendProgressListener(MsgSendProgressListener listener) { @@ -139,8 +146,10 @@ class MessageManager { .then((value) => _toObj(value)); } - Future createSoundMessage( - {required String soundPath, required int duration}) { + Future createSoundMessage({ + required String soundPath, + required int duration, + }) { return _channel .invokeMethod( 'createSoundMessage', @@ -167,18 +176,25 @@ class MessageManager { .then((value) => _toObj(value)); } - Future createFileMessage( - {required String filePath, required String fileName}) { + Future createFileMessage({ + required String filePath, + required String fileName, + }) { return _channel - .invokeMethod('createFileMessage', - _buildParam({'filePath': filePath, 'fileName': fileName})) + .invokeMethod( + 'createFileMessage', + _buildParam({ + 'filePath': filePath, + 'fileName': fileName, + })) .then((value) => _toObj(value)); } - Future createMergerMessage( - {required List messageList, - required String title, - required List summaryList}) { + Future createMergerMessage({ + required List messageList, + required String title, + required List summaryList, + }) { return _channel .invokeMethod( 'createMergerMessage', @@ -194,8 +210,9 @@ class MessageManager { return _channel .invokeMethod( 'createForwardMessage', - _buildParam( - {'message': messageList.map((e) => e.toJson()).toList()})) + _buildParam({ + 'message': messageList.map((e) => e.toJson()).toList(), + })) .then((value) => _toObj(value)); } @@ -207,6 +224,123 @@ class MessageManager { _channel.invokeMethod('forceSyncMsg', _buildParam({})); } + Message createTextMessageV2({required String text}) { + return _createMessage(contentType: MessageType.text)..content = text; + } + + Message createTextAtMessageV2({ + required String text, + required List atUidList, + }) { + var atElem = AtElem( + text: text, + atUserList: atUidList, + isAtSelf: false, + ); + return _createMessage(contentType: MessageType.at_text) + ..forceList = atUidList + ..atElem = atElem + ..content = jsonEncode(atElem); + } + + Message createImageMessageV2({ + required String imagePath, + required String mineType, + required int size, + required int width, + required int height, + }) { + return _createMessage(contentType: MessageType.picture) + ..pictureElem = PictureElem( + sourcePath: imagePath, + sourcePicture: PictureInfo( + type: mineType, + size: size, + width: width, + height: height, + ), + ); + } + + Message createSoundMessageV2({ + required String soundPath, + required int duration, + required int dataSize, + }) { + return _createMessage(contentType: MessageType.voice) + ..soundElem = SoundElem( + soundPath: soundPath, + dataSize: dataSize, + duration: duration, + ); + } + + Message createVideoMessageV2({ + required String videoPath, + required String videoType, + required int videoSize, + required int duration, + required String snapshotPath, + required int snapshotSize, + required int snapshotWidth, + required int snapshotHeight, + }) { + return _createMessage(contentType: MessageType.video) + ..videoElem = VideoElem( + videoPath: videoPath, + videoSize: videoSize, + videoType: videoType, + duration: duration, + snapshotPath: snapshotPath, + snapshotSize: snapshotSize, + snapshotHeight: snapshotHeight, + snapshotWidth: snapshotWidth, + ); + } + + Message createFileMessageV2({ + required String filePath, + required String fileName, + required int fileSize, + }) { + return _createMessage(contentType: MessageType.file) + ..fileElem = FileElem( + fileName: fileName, + filePath: filePath, + fileSize: fileSize, + ); + } + +/* Message createMergerMessageV2({ + required List messageList, + required String title, + required List summaryList, + }) { + var message = _createMessage(contentType: MessageType.merger); + return message; + } + + Message createForwardMessageV2({required List messageList}) { + var message = _createMessage(); + return message; + }*/ + + static Message _createMessage({required contentType}) { + var now = DateTime.now(); + return Message( + clientMsgID: 'client_msg_id_v2_${now.microsecondsSinceEpoch}', + createTime: now.millisecond ~/ 1000, + sendTime: now.millisecond ~/ 1000, + // sessionType: 0,//请求为单人会话1,请求为群聊会话2 + msgFrom: 100, + contentType: contentType, + status: MessageStatus.sending, + platformID: Platform.isAndroid ? IMPlatform.android : IMPlatform.ios, + sendID: OpenIM.iMManager.uid, + senderNickName: OpenIM.iMManager.uInfo.name, + ); + } + static Map _buildParam(Map param) { param["ManagerName"] = "messageManager"; return param;