new_version1
This commit is contained in:
@@ -5,28 +5,20 @@ import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
|
||||
|
||||
class MessageManager {
|
||||
MethodChannel _channel;
|
||||
List<AdvancedMsgListener> advancedMsgListeners = List.empty(growable: true);
|
||||
|
||||
// List<AdvancedMsgListener> advancedMsgListeners = List.empty(growable: true);
|
||||
MsgSendProgressListener? msgSendProgressListener;
|
||||
late AdvancedMsgListener advancedMsgListener;
|
||||
|
||||
MessageManager(this._channel);
|
||||
|
||||
/// Add a message listener
|
||||
/// Set a message listener
|
||||
/// 消息监听
|
||||
Future addAdvancedMsgListener(AdvancedMsgListener listener) {
|
||||
advancedMsgListeners.add(listener);
|
||||
Future setAdvancedMsgListener(AdvancedMsgListener listener) {
|
||||
this.advancedMsgListener = listener;
|
||||
// advancedMsgListeners.add(listener);
|
||||
return _channel.invokeMethod(
|
||||
'addAdvancedMsgListener',
|
||||
_buildParam({
|
||||
'id': listener.id,
|
||||
}));
|
||||
}
|
||||
|
||||
/// Remove a message listener
|
||||
@deprecated
|
||||
Future removeAdvancedMsgListener(AdvancedMsgListener listener) {
|
||||
advancedMsgListeners.remove(listener);
|
||||
return _channel.invokeMethod(
|
||||
'removeAdvancedMsgListener',
|
||||
'setAdvancedMsgListener',
|
||||
_buildParam({
|
||||
'id': listener.id,
|
||||
}));
|
||||
@@ -47,7 +39,8 @@ class MessageManager {
|
||||
required Message message,
|
||||
String? userID,
|
||||
String? groupID,
|
||||
bool onlineUserOnly = false,
|
||||
OfflinePushInfo? offlinePushInfo,
|
||||
String? operationID,
|
||||
}) =>
|
||||
_channel.invokeMethod(
|
||||
'sendMessage',
|
||||
@@ -55,7 +48,8 @@ class MessageManager {
|
||||
'message': message.toJson(),
|
||||
'userID': userID ?? '',
|
||||
'groupID': groupID ?? '',
|
||||
'onlineUserOnly': onlineUserOnly,
|
||||
'offlinePushInfo': offlinePushInfo?.toJson(),
|
||||
'operationID': _checkOperationID(operationID),
|
||||
})) /*.then((value) => _toObj(value))*/;
|
||||
|
||||
/// Find all history message
|
||||
@@ -67,40 +61,57 @@ class MessageManager {
|
||||
String? groupID,
|
||||
Message? startMsg,
|
||||
int? count,
|
||||
String? operationID,
|
||||
}) =>
|
||||
_channel
|
||||
.invokeMethod(
|
||||
'getHistoryMessageList',
|
||||
_buildParam({
|
||||
'userID': userID ?? '',
|
||||
'startMsg': startMsg?.toJson() /*?? {}*/,
|
||||
'groupID': groupID ?? '',
|
||||
'startClientMsgID': startMsg?.clientMsgID ?? '',
|
||||
'count': count ?? 10,
|
||||
'operationID': _checkOperationID(operationID),
|
||||
}))
|
||||
.then((value) => _toList(value));
|
||||
|
||||
/// Revoke the sent information
|
||||
/// 撤回消息
|
||||
Future revokeMessage({required Message message}) =>
|
||||
_channel.invokeMethod('revokeMessage', _buildParam(message.toJson()));
|
||||
Future revokeMessage({
|
||||
required Message message,
|
||||
String? operationID,
|
||||
}) =>
|
||||
_channel.invokeMethod(
|
||||
'revokeMessage',
|
||||
_buildParam(message.toJson()
|
||||
..addAll({
|
||||
"operationID": _checkOperationID(operationID),
|
||||
})));
|
||||
|
||||
/// Delete message
|
||||
/// 删除消息
|
||||
Future deleteMessageFromLocalStorage({required Message message}) =>
|
||||
Future deleteMessageFromLocalStorage({
|
||||
required Message message,
|
||||
String? operationID,
|
||||
}) =>
|
||||
_channel.invokeMethod(
|
||||
'deleteMessageFromLocalStorage', _buildParam(message.toJson()));
|
||||
'deleteMessageFromLocalStorage',
|
||||
_buildParam(message.toJson()
|
||||
..addAll({
|
||||
"operationID": _checkOperationID(operationID),
|
||||
})));
|
||||
|
||||
///
|
||||
@deprecated
|
||||
Future deleteMessages({required List<Message> msgList}) =>
|
||||
_channel.invokeMethod('deleteMessages',
|
||||
_buildParam({"msgList": msgList.map((e) => e.toJson()).toList()}));
|
||||
// Future deleteMessages({required List<Message> msgList}) =>
|
||||
// _channel.invokeMethod('deleteMessages',
|
||||
// _buildParam({"msgList": msgList.map((e) => e.toJson()).toList()}));
|
||||
|
||||
///
|
||||
Future insertSingleMessageToLocalStorage({
|
||||
String? receiverID,
|
||||
String? senderID,
|
||||
Message? message,
|
||||
String? operationID,
|
||||
}) =>
|
||||
_channel.invokeMethod(
|
||||
'insertSingleMessageToLocalStorage',
|
||||
@@ -108,53 +119,68 @@ class MessageManager {
|
||||
"message": message?.toJson(),
|
||||
"receiverID": receiverID,
|
||||
"senderID": senderID,
|
||||
"operationID": _checkOperationID(operationID),
|
||||
}));
|
||||
|
||||
/// Query the message according to the message id
|
||||
Future findMessages({required List<String> messageIDList}) =>
|
||||
_channel.invokeMethod(
|
||||
'findMessages',
|
||||
_buildParam({
|
||||
"messageIDList": messageIDList,
|
||||
}));
|
||||
// Future findMessages({required List<String> messageIDList}) =>
|
||||
// _channel.invokeMethod(
|
||||
// 'findMessages',
|
||||
// _buildParam({
|
||||
// "messageIDList": messageIDList,
|
||||
// }));
|
||||
|
||||
/// Mark c2c message as read
|
||||
/// 标记c2c消息已读
|
||||
Future markC2CMessageAsRead({
|
||||
required String userID,
|
||||
required List<String> messageIDList,
|
||||
String? operationID,
|
||||
}) =>
|
||||
_channel.invokeMethod(
|
||||
'markC2CMessageAsRead',
|
||||
_buildParam({
|
||||
"messageIDList": messageIDList,
|
||||
"userID": userID,
|
||||
"operationID": _checkOperationID(operationID),
|
||||
}));
|
||||
|
||||
/// Typing
|
||||
/// 正在输入提示
|
||||
Future typingStatusUpdate({
|
||||
required String userID,
|
||||
bool typing = false,
|
||||
String? msgTip,
|
||||
String? operationID,
|
||||
}) =>
|
||||
_channel.invokeMethod(
|
||||
'typingStatusUpdate',
|
||||
_buildParam({
|
||||
"typing": typing ? 'yes' : 'no',
|
||||
"msgTip": msgTip,
|
||||
"userID": userID,
|
||||
"operationID": _checkOperationID(operationID),
|
||||
}));
|
||||
|
||||
/// Create text message
|
||||
/// 创建文本消息
|
||||
Future<Message> createTextMessage({required String text}) => _channel
|
||||
.invokeMethod('createTextMessage', _buildParam({'text': text}))
|
||||
.then((value) => _toObj(value));
|
||||
Future<Message> createTextMessage({
|
||||
required String text,
|
||||
String? operationID,
|
||||
}) =>
|
||||
_channel
|
||||
.invokeMethod(
|
||||
'createTextMessage',
|
||||
_buildParam({
|
||||
'text': text,
|
||||
"operationID": _checkOperationID(operationID),
|
||||
}))
|
||||
.then((value) => _toObj(value));
|
||||
|
||||
/// Create @ message
|
||||
/// 创建@消息
|
||||
Future<Message> createTextAtMessage({
|
||||
required String text,
|
||||
required List<String> atUidList,
|
||||
String? operationID,
|
||||
}) =>
|
||||
_channel
|
||||
.invokeMethod(
|
||||
@@ -162,26 +188,40 @@ class MessageManager {
|
||||
_buildParam({
|
||||
'text': text,
|
||||
'atUserList': atUidList,
|
||||
"operationID": _checkOperationID(operationID),
|
||||
}),
|
||||
)
|
||||
.then((value) => _toObj(value));
|
||||
|
||||
/// Create picture message
|
||||
/// 创建图片消息
|
||||
Future<Message> createImageMessage({required String imagePath}) => _channel
|
||||
.invokeMethod(
|
||||
'createImageMessage',
|
||||
_buildParam({'imagePath': imagePath}),
|
||||
)
|
||||
.then((value) => _toObj(value));
|
||||
Future<Message> createImageMessage({
|
||||
required String imagePath,
|
||||
String? operationID,
|
||||
}) =>
|
||||
_channel
|
||||
.invokeMethod(
|
||||
'createImageMessage',
|
||||
_buildParam({
|
||||
'imagePath': imagePath,
|
||||
"operationID": _checkOperationID(operationID),
|
||||
}),
|
||||
)
|
||||
.then((value) => _toObj(value));
|
||||
|
||||
/// Create picture message
|
||||
/// 创建图片消息
|
||||
Future<Message> createImageMessageFromFullPath({required String imagePath}) =>
|
||||
Future<Message> createImageMessageFromFullPath({
|
||||
required String imagePath,
|
||||
String? operationID,
|
||||
}) =>
|
||||
_channel
|
||||
.invokeMethod(
|
||||
'createImageMessageFromFullPath',
|
||||
_buildParam({'imagePath': imagePath}),
|
||||
_buildParam({
|
||||
'imagePath': imagePath,
|
||||
"operationID": _checkOperationID(operationID),
|
||||
}),
|
||||
)
|
||||
.then((value) => _toObj(value));
|
||||
|
||||
@@ -190,11 +230,16 @@ class MessageManager {
|
||||
Future<Message> createSoundMessage({
|
||||
required String soundPath,
|
||||
required int duration,
|
||||
String? operationID,
|
||||
}) =>
|
||||
_channel
|
||||
.invokeMethod(
|
||||
'createSoundMessage',
|
||||
_buildParam({'soundPath': soundPath, "duration": duration}),
|
||||
_buildParam({
|
||||
'soundPath': soundPath,
|
||||
"duration": duration,
|
||||
"operationID": _checkOperationID(operationID),
|
||||
}),
|
||||
)
|
||||
.then((value) => _toObj(value));
|
||||
|
||||
@@ -203,11 +248,16 @@ class MessageManager {
|
||||
Future<Message> createSoundMessageFromFullPath({
|
||||
required String soundPath,
|
||||
required int duration,
|
||||
String? operationID,
|
||||
}) =>
|
||||
_channel
|
||||
.invokeMethod(
|
||||
'createSoundMessageFromFullPath',
|
||||
_buildParam({'soundPath': soundPath, "duration": duration}),
|
||||
_buildParam({
|
||||
'soundPath': soundPath,
|
||||
"duration": duration,
|
||||
"operationID": _checkOperationID(operationID),
|
||||
}),
|
||||
)
|
||||
.then((value) => _toObj(value));
|
||||
|
||||
@@ -218,6 +268,7 @@ class MessageManager {
|
||||
required String videoType,
|
||||
required int duration,
|
||||
required String snapshotPath,
|
||||
String? operationID,
|
||||
}) =>
|
||||
_channel
|
||||
.invokeMethod(
|
||||
@@ -227,6 +278,7 @@ class MessageManager {
|
||||
'videoType': videoType,
|
||||
'duration': duration,
|
||||
'snapshotPath': snapshotPath,
|
||||
"operationID": _checkOperationID(operationID),
|
||||
}))
|
||||
.then((value) => _toObj(value));
|
||||
|
||||
@@ -237,6 +289,7 @@ class MessageManager {
|
||||
required String videoType,
|
||||
required int duration,
|
||||
required String snapshotPath,
|
||||
String? operationID,
|
||||
}) =>
|
||||
_channel
|
||||
.invokeMethod(
|
||||
@@ -246,6 +299,7 @@ class MessageManager {
|
||||
'videoType': videoType,
|
||||
'duration': duration,
|
||||
'snapshotPath': snapshotPath,
|
||||
"operationID": _checkOperationID(operationID),
|
||||
}))
|
||||
.then((value) => _toObj(value));
|
||||
|
||||
@@ -254,6 +308,7 @@ class MessageManager {
|
||||
Future<Message> createFileMessage({
|
||||
required String filePath,
|
||||
required String fileName,
|
||||
String? operationID,
|
||||
}) {
|
||||
return _channel
|
||||
.invokeMethod(
|
||||
@@ -261,6 +316,7 @@ class MessageManager {
|
||||
_buildParam({
|
||||
'filePath': filePath,
|
||||
'fileName': fileName,
|
||||
"operationID": _checkOperationID(operationID),
|
||||
}))
|
||||
.then((value) => _toObj(value));
|
||||
}
|
||||
@@ -270,6 +326,7 @@ class MessageManager {
|
||||
Future<Message> createFileMessageFromFullPath({
|
||||
required String filePath,
|
||||
required String fileName,
|
||||
String? operationID,
|
||||
}) =>
|
||||
_channel
|
||||
.invokeMethod(
|
||||
@@ -277,6 +334,7 @@ class MessageManager {
|
||||
_buildParam({
|
||||
'filePath': filePath,
|
||||
'fileName': fileName,
|
||||
"operationID": _checkOperationID(operationID),
|
||||
}))
|
||||
.then((value) => _toObj(value));
|
||||
|
||||
@@ -286,6 +344,7 @@ class MessageManager {
|
||||
required List<Message> messageList,
|
||||
required String title,
|
||||
required List<String> summaryList,
|
||||
String? operationID,
|
||||
}) =>
|
||||
_channel
|
||||
.invokeMethod(
|
||||
@@ -294,17 +353,22 @@ class MessageManager {
|
||||
'messageList': messageList.map((e) => e.toJson()).toList(),
|
||||
'title': title,
|
||||
'summaryList': summaryList,
|
||||
"operationID": _checkOperationID(operationID),
|
||||
}))
|
||||
.then((value) => _toObj(value));
|
||||
|
||||
/// Create forward message
|
||||
/// 创建转发消息
|
||||
Future<Message> createForwardMessage({required Message message}) {
|
||||
Future<Message> createForwardMessage({
|
||||
required Message message,
|
||||
String? operationID,
|
||||
}) {
|
||||
return _channel
|
||||
.invokeMethod(
|
||||
'createForwardMessage',
|
||||
_buildParam({
|
||||
'message': message.toJson(),
|
||||
"operationID": _checkOperationID(operationID),
|
||||
}))
|
||||
.then((value) => _toObj(value));
|
||||
}
|
||||
@@ -315,6 +379,7 @@ class MessageManager {
|
||||
required double latitude,
|
||||
required double longitude,
|
||||
required String description,
|
||||
String? operationID,
|
||||
}) =>
|
||||
_channel
|
||||
.invokeMethod(
|
||||
@@ -323,6 +388,7 @@ class MessageManager {
|
||||
'latitude': latitude,
|
||||
'longitude': longitude,
|
||||
'description': description,
|
||||
"operationID": _checkOperationID(operationID),
|
||||
}))
|
||||
.then((value) => _toObj(value));
|
||||
|
||||
@@ -332,6 +398,7 @@ class MessageManager {
|
||||
required String data,
|
||||
required String extension,
|
||||
required String description,
|
||||
String? operationID,
|
||||
}) =>
|
||||
_channel
|
||||
.invokeMethod(
|
||||
@@ -340,6 +407,7 @@ class MessageManager {
|
||||
'data': data,
|
||||
'extension': extension,
|
||||
'description': description,
|
||||
"operationID": _checkOperationID(operationID),
|
||||
}))
|
||||
.then((value) => _toObj(value));
|
||||
|
||||
@@ -348,6 +416,7 @@ class MessageManager {
|
||||
Future<Message> createQuoteMessage({
|
||||
required String text,
|
||||
required Message quoteMsg,
|
||||
String? operationID,
|
||||
}) =>
|
||||
_channel
|
||||
.invokeMethod(
|
||||
@@ -355,6 +424,7 @@ class MessageManager {
|
||||
_buildParam({
|
||||
'quoteText': text,
|
||||
'quoteMessage': quoteMsg.toJson(),
|
||||
"operationID": _checkOperationID(operationID),
|
||||
}))
|
||||
.then((value) => _toObj(value));
|
||||
|
||||
@@ -362,24 +432,42 @@ class MessageManager {
|
||||
/// 创建卡片消息
|
||||
Future<Message> createCardMessage({
|
||||
required Map<String, dynamic> data,
|
||||
String? operationID,
|
||||
}) =>
|
||||
_channel
|
||||
.invokeMethod(
|
||||
'createCardMessage',
|
||||
_buildParam({
|
||||
'cardMessage': data,
|
||||
"operationID": _checkOperationID(operationID),
|
||||
}))
|
||||
.then((value) => _toObj(value));
|
||||
|
||||
/// Clear all c2c history message
|
||||
/// 清空单聊消息记录
|
||||
Future<dynamic> clearC2CHistoryMessage({required String uid}) => _channel
|
||||
.invokeMethod('clearC2CHistoryMessage', _buildParam({"userID": uid}));
|
||||
Future<dynamic> clearC2CHistoryMessage({
|
||||
required String uid,
|
||||
String? operationID,
|
||||
}) =>
|
||||
_channel.invokeMethod(
|
||||
'clearC2CHistoryMessage',
|
||||
_buildParam({
|
||||
"userID": uid,
|
||||
"operationID": _checkOperationID(operationID),
|
||||
}));
|
||||
|
||||
/// Clear all group history
|
||||
/// 清空组消息记录
|
||||
Future<dynamic> clearGroupHistoryMessage({required String gid}) => _channel
|
||||
.invokeMethod('clearGroupHistoryMessage', _buildParam({"groupID": gid}));
|
||||
Future<dynamic> clearGroupHistoryMessage({
|
||||
required String gid,
|
||||
String? operationID,
|
||||
}) =>
|
||||
_channel.invokeMethod(
|
||||
'clearGroupHistoryMessage',
|
||||
_buildParam({
|
||||
"groupID": gid,
|
||||
"operationID": _checkOperationID(operationID),
|
||||
}));
|
||||
|
||||
///
|
||||
// void forceSyncMsg() {
|
||||
@@ -401,4 +489,8 @@ class MessageManager {
|
||||
static String _printValue(value) {
|
||||
return value;
|
||||
}
|
||||
|
||||
static String _checkOperationID(String? obj) {
|
||||
return obj ?? DateTime.now().millisecondsSinceEpoch.toString();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user