hrxiang 4 years ago
parent f76b7ae605
commit e8cb9d5662
  1. 106
      lib/src/manager/im_conversation_manager.dart
  2. 4
      lib/src/manager/im_friendship_manager.dart
  3. 20
      lib/src/manager/im_group_manager.dart
  4. 9
      lib/src/manager/im_manager.dart
  5. 170
      lib/src/manager/im_message_manager.dart

@ -9,62 +9,78 @@ class ConversationManager {
ConversationManager(this._channel); ConversationManager(this._channel);
void setConversationListener(ConversationListener listener) { Future setConversationListener(ConversationListener listener) {
this.conversationListener = listener; this.conversationListener = listener;
_channel.invokeMethod('setConversationListener', _buildParam({})); return _channel.invokeMethod('setConversationListener', _buildParam({}));
} }
Future<List<ConversationInfo>> getAllConversationList() { Future<List<ConversationInfo>> getAllConversationList() => _channel
return _channel .invokeMethod('getAllConversationList', _buildParam({}))
.invokeMethod('getAllConversationList', _buildParam({})) .then((value) => _toList(value));
.then((value) => _toList(value));
}
/// sourceID: userID(single chat) ,groupID(group chat) /// sourceID: userID(single chat) ,groupID(group chat)
/// sessionType: 1(single chat) ,2(group chat) /// sessionType: 1(single chat) ,2(group chat)
Future<ConversationInfo> getSingleConversation( Future<ConversationInfo> getSingleConversation({
{required String sourceID, required String sessionType}) { required String sourceID,
return _channel required String sessionType,
.invokeMethod('getOneConversation', }) =>
_buildParam({"sourceID": sourceID, "sessionType": sessionType})) _channel
.then((value) => _toObj(value)); .invokeMethod(
} 'getOneConversation',
_buildParam({
"sourceID": sourceID,
"sessionType": sessionType,
}))
.then((value) => _toObj(value));
/// ["single_1234","group_3434"] /// ["single_1234","group_3434"]
Future<List<ConversationInfo>> getMultipleConversation( Future<List<ConversationInfo>> getMultipleConversation({
{required List<String> conversationIDList}) { required List<String> conversationIDList,
return _channel }) =>
.invokeMethod('getMultipleConversation', _channel
_buildParam({"conversationIDList": conversationIDList})) .invokeMethod(
.then((value) => _toList(value)); 'getMultipleConversation',
} _buildParam({
"conversationIDList": conversationIDList,
}))
.then((value) => _toList(value));
void deleteConversation({required String conversationID}) { Future deleteConversation({
_channel required String conversationID,
.invokeMethod('deleteConversation', }) =>
_buildParam({"conversationID": conversationID})) _channel
.then((value) => _printValue(value)); .invokeMethod(
} 'deleteConversation',
_buildParam({
"conversationID": conversationID,
}))
.then((value) => _printValue(value));
void setConversationDraft( Future setConversationDraft({
{required String conversationID, required String draftText}) { required String conversationID,
_channel required String draftText,
.invokeMethod( }) =>
'setConversationDraft', _channel
_buildParam( .invokeMethod(
{"conversationID": conversationID, "draftText": draftText})) 'setConversationDraft',
.then((value) => _printValue(value)); _buildParam({
} "conversationID": conversationID,
"draftText": draftText,
}))
.then((value) => _printValue(value));
void pinConversation( Future pinConversation({
{required String conversationID, required bool isPinned}) { required String conversationID,
_channel required bool isPinned,
.invokeMethod( }) =>
'pinConversation', _channel
_buildParam( .invokeMethod(
{"conversationID": conversationID, "isPinned": isPinned})) 'pinConversation',
.then((value) => _printValue(value)); _buildParam({
} "conversationID": conversationID,
"isPinned": isPinned,
}))
.then((value) => _printValue(value));
static Map _buildParam(Map param) { static Map _buildParam(Map param) {
param["ManagerName"] = "conversationManager"; param["ManagerName"] = "conversationManager";

@ -9,9 +9,9 @@ class FriendshipManager {
FriendshipManager(this._channel); FriendshipManager(this._channel);
void setFriendshipListener(FriendshipListener listener) { Future setFriendshipListener(FriendshipListener listener) {
this.friendshipListener = listener; this.friendshipListener = listener;
_channel.invokeMethod('setFriendListener', _buildParam({})); return _channel.invokeMethod('setFriendListener', _buildParam({}));
} }
Future<List<UserInfo>> getFriendsInfo({required List<String> uidList}) { Future<List<UserInfo>> getFriendsInfo({required List<String> uidList}) {

@ -10,9 +10,9 @@ class GroupManager {
GroupManager(this._channel); GroupManager(this._channel);
void setGroupListener(GroupListener listener) { Future setGroupListener(GroupListener listener) {
this.groupListener = listener; this.groupListener = listener;
_channel.invokeMethod('setGroupListener', _buildParam({})); return _channel.invokeMethod('setGroupListener', _buildParam({}));
} }
Future<List<GroupInviteResult>> inviteUserToGroup({ Future<List<GroupInviteResult>> inviteUserToGroup({
@ -195,20 +195,20 @@ class GroupManager {
})); }));
} }
void forceSyncApplyGroupRequest() { Future forceSyncApplyGroupRequest() {
_channel.invokeMethod('forceSyncApplyGroupRequest', _buildParam({})); return _channel.invokeMethod('forceSyncApplyGroupRequest', _buildParam({}));
} }
void forceSyncGroupRequest() { Future forceSyncGroupRequest() {
_channel.invokeMethod('forceSyncGroupRequest', _buildParam({})); return _channel.invokeMethod('forceSyncGroupRequest', _buildParam({}));
} }
void forceSyncJoinedGroup() { Future forceSyncJoinedGroup() {
_channel.invokeMethod('forceSyncJoinedGroup', _buildParam({})); return _channel.invokeMethod('forceSyncJoinedGroup', _buildParam({}));
} }
void forceSyncJoinedGroupMember() { Future forceSyncJoinedGroupMember() {
_channel.invokeMethod('forceSyncJoinedGroupMember', _buildParam({})); return _channel.invokeMethod('forceSyncJoinedGroupMember', _buildParam({}));
} }
static Map _buildParam(Map param) { static Map _buildParam(Map param) {

@ -13,8 +13,7 @@ class IMManager {
late SignalingManager signalingManager; late SignalingManager signalingManager;
late InitSDKListener _initSDKListener; late InitSDKListener _initSDKListener;
late String uid; late String uid;
late UserInfo uInfo;
// late UserInfo userInfo;
IMManager(this._channel) { IMManager(this._channel) {
conversationManager = ConversationManager(_channel); conversationManager = ConversationManager(_channel);
@ -34,8 +33,8 @@ class IMManager {
dynamic data = call.arguments['data']; dynamic data = call.arguments['data'];
switch (type) { switch (type) {
case 'onSelfInfoUpdated': case 'onSelfInfoUpdated':
_initSDKListener uInfo = UserInfo.fromJson(_formatJson(data));
.onSelfInfoUpdated(UserInfo.fromJson(_formatJson(data))); _initSDKListener.onSelfInfoUpdated(uInfo);
break; break;
case 'onConnectFailed': case 'onConnectFailed':
int? errCode = call.arguments['errCode']; int? errCode = call.arguments['errCode'];
@ -303,7 +302,7 @@ class IMManager {
} }
Future<UserInfo> getLoginUserInfo() { Future<UserInfo> getLoginUserInfo() {
return getUsersInfo([uid]).then((list) => list[0]); return getUsersInfo([uid]).then((list) => uInfo = list[0]);
} }
Future<String?> setSelfInfo(UserInfo info) { Future<String?> setSelfInfo(UserInfo info) {

@ -1,4 +1,5 @@
import 'dart:convert'; import 'dart:convert';
import 'dart:io';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_openim_sdk/flutter_openim_sdk.dart'; import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
@ -10,16 +11,22 @@ class MessageManager {
MessageManager(this._channel); MessageManager(this._channel);
void addAdvancedMsgListener(AdvancedMsgListener listener) { Future addAdvancedMsgListener(AdvancedMsgListener listener) {
advancedMsgListeners.add(listener); advancedMsgListeners.add(listener);
_channel.invokeMethod( return _channel.invokeMethod(
'addAdvancedMsgListener', _buildParam({'id': listener.id})); 'addAdvancedMsgListener',
_buildParam({
'id': listener.id,
}));
} }
void removeAdvancedMsgListener(AdvancedMsgListener listener) { Future removeAdvancedMsgListener(AdvancedMsgListener listener) {
advancedMsgListeners.remove(listener); advancedMsgListeners.remove(listener);
_channel.invokeMethod( return _channel.invokeMethod(
'removeAdvancedMsgListener', _buildParam({'id': listener.id})); 'removeAdvancedMsgListener',
_buildParam({
'id': listener.id,
}));
} }
void setMsgSendProgressListener(MsgSendProgressListener listener) { void setMsgSendProgressListener(MsgSendProgressListener listener) {
@ -139,8 +146,10 @@ class MessageManager {
.then((value) => _toObj(value)); .then((value) => _toObj(value));
} }
Future<Message> createSoundMessage( Future<Message> createSoundMessage({
{required String soundPath, required int duration}) { required String soundPath,
required int duration,
}) {
return _channel return _channel
.invokeMethod( .invokeMethod(
'createSoundMessage', 'createSoundMessage',
@ -167,18 +176,25 @@ class MessageManager {
.then((value) => _toObj(value)); .then((value) => _toObj(value));
} }
Future<Message> createFileMessage( Future<Message> createFileMessage({
{required String filePath, required String fileName}) { required String filePath,
required String fileName,
}) {
return _channel return _channel
.invokeMethod('createFileMessage', .invokeMethod(
_buildParam({'filePath': filePath, 'fileName': fileName})) 'createFileMessage',
_buildParam({
'filePath': filePath,
'fileName': fileName,
}))
.then((value) => _toObj(value)); .then((value) => _toObj(value));
} }
Future<Message> createMergerMessage( Future<Message> createMergerMessage({
{required List<Message> messageList, required List<Message> messageList,
required String title, required String title,
required List<String> summaryList}) { required List<String> summaryList,
}) {
return _channel return _channel
.invokeMethod( .invokeMethod(
'createMergerMessage', 'createMergerMessage',
@ -194,8 +210,9 @@ class MessageManager {
return _channel return _channel
.invokeMethod( .invokeMethod(
'createForwardMessage', 'createForwardMessage',
_buildParam( _buildParam({
{'message': messageList.map((e) => e.toJson()).toList()})) 'message': messageList.map((e) => e.toJson()).toList(),
}))
.then((value) => _toObj(value)); .then((value) => _toObj(value));
} }
@ -207,6 +224,123 @@ class MessageManager {
_channel.invokeMethod('forceSyncMsg', _buildParam({})); _channel.invokeMethod('forceSyncMsg', _buildParam({}));
} }
Message createTextMessageV2({required String text}) {
return _createMessage(contentType: MessageType.text)..content = text;
}
Message createTextAtMessageV2({
required String text,
required List<String> 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<Message> messageList,
required String title,
required List<String> summaryList,
}) {
var message = _createMessage(contentType: MessageType.merger);
return message;
}
Message createForwardMessageV2({required List<Message> 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,//12
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) { static Map _buildParam(Map param) {
param["ManagerName"] = "messageManager"; param["ManagerName"] = "messageManager";
return param; return param;

Loading…
Cancel
Save