new_version1

This commit is contained in:
hrxiang
2022-02-16 15:36:37 +08:00
parent cd0865853b
commit f3261d2ce4
99 changed files with 4404 additions and 3093 deletions

View File

@@ -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();
}
}