New add fuc
This commit is contained in:
@@ -2,7 +2,9 @@ import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
|
||||
|
||||
class OnAdvancedMsgListener {
|
||||
/// Message read receipt
|
||||
Function(List<ReadReceiptInfo> list)? onRecvC2CReadReceipt;
|
||||
Function(List<ReadReceiptInfo> list)? onRecvC2CMessageReadReceipt;
|
||||
|
||||
Function(List<ReadReceiptInfo> list)? onRecvGroupMessageReadReceipt;
|
||||
|
||||
/// A friend revoked a message
|
||||
Function(String msgId)? onRecvMessageRevoked;
|
||||
@@ -14,20 +16,25 @@ class OnAdvancedMsgListener {
|
||||
String id;
|
||||
|
||||
OnAdvancedMsgListener({
|
||||
this.onRecvC2CReadReceipt,
|
||||
this.onRecvC2CMessageReadReceipt,
|
||||
this.onRecvGroupMessageReadReceipt,
|
||||
this.onRecvMessageRevoked,
|
||||
this.onRecvNewMessage,
|
||||
}) : id = "id_${DateTime.now().microsecondsSinceEpoch}";
|
||||
|
||||
void recvC2CReadReceipt(List<ReadReceiptInfo> list) {
|
||||
if (null != onRecvC2CReadReceipt) onRecvC2CReadReceipt!(list);
|
||||
void recvC2CMessageReadReceipt(List<ReadReceiptInfo> list) {
|
||||
onRecvC2CMessageReadReceipt?.call(list);
|
||||
}
|
||||
|
||||
void recvGroupMessageReadReceipt(List<ReadReceiptInfo> list) {
|
||||
onRecvGroupMessageReadReceipt?.call(list);
|
||||
}
|
||||
|
||||
void recvMessageRevoked(String msgId) {
|
||||
if (null != onRecvMessageRevoked) onRecvMessageRevoked!(msgId);
|
||||
onRecvMessageRevoked?.call(msgId);
|
||||
}
|
||||
|
||||
void recvNewMessage(Message msg) {
|
||||
if (null != onRecvNewMessage) onRecvNewMessage!(msg);
|
||||
onRecvNewMessage?.call(msg);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,8 @@ class OnSignalingListener {
|
||||
final Function(SignalingInfo info)? onInviteeAccepted;
|
||||
final Function(SignalingInfo info)? onInviteeRejected;
|
||||
final Function(SignalingInfo info)? onReceiveNewInvitation;
|
||||
final Function(SignalingInfo info)? onInviteeRejectedByOtherDevice;
|
||||
final Function(SignalingInfo info)? onInviteeAcceptedByOtherDevice;
|
||||
|
||||
OnSignalingListener({
|
||||
this.onInvitationCancelled,
|
||||
@@ -13,6 +15,8 @@ class OnSignalingListener {
|
||||
this.onInviteeAccepted,
|
||||
this.onInviteeRejected,
|
||||
this.onReceiveNewInvitation,
|
||||
this.onInviteeAcceptedByOtherDevice,
|
||||
this.onInviteeRejectedByOtherDevice,
|
||||
});
|
||||
|
||||
/// 被邀请者收到:邀请者取消音视频通话
|
||||
@@ -39,4 +43,14 @@ class OnSignalingListener {
|
||||
void receiveNewInvitation(SignalingInfo info) {
|
||||
onReceiveNewInvitation?.call(info);
|
||||
}
|
||||
|
||||
/// 被邀请者(其他端)收到:比如被邀请者在手机拒接,在pc上会收到此回调
|
||||
void inviteeAcceptedByOtherDevice(SignalingInfo info) {
|
||||
onInviteeAcceptedByOtherDevice?.call(info);
|
||||
}
|
||||
|
||||
/// 被邀请者(其他端)收到:比如被邀请者在手机拒接,在pc上会收到此回调
|
||||
void inviteeRejectedByOtherDevice(SignalingInfo info) {
|
||||
onInviteeRejectedByOtherDevice?.call(info);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -191,18 +191,18 @@ class ConversationManager {
|
||||
/// Message Do Not Disturb
|
||||
/// [{"conversationId":"single_13922222222","result":0}]
|
||||
/// 查询免打扰状态
|
||||
// Future<List<dynamic>> getConversationRecvMessageOpt({
|
||||
// required List<String> conversationIDList,
|
||||
// String? operationID,
|
||||
// }) =>
|
||||
// _channel
|
||||
// .invokeMethod(
|
||||
// 'getConversationRecvMessageOpt',
|
||||
// _buildParam({
|
||||
// "conversationIDList": conversationIDList,
|
||||
// "operationID": Utils.checkOperationID(operationID),
|
||||
// }))
|
||||
// .then((value) => Utils.toListMap(value));
|
||||
Future<List<dynamic>> getConversationRecvMessageOpt({
|
||||
required List<String> conversationIDList,
|
||||
String? operationID,
|
||||
}) =>
|
||||
_channel
|
||||
.invokeMethod(
|
||||
'getConversationRecvMessageOpt',
|
||||
_buildParam({
|
||||
"conversationIDList": conversationIDList,
|
||||
"operationID": Utils.checkOperationID(operationID),
|
||||
}))
|
||||
.then((value) => Utils.toListMap(value));
|
||||
|
||||
/// Custom sort for conversation list
|
||||
/// 会话列表自定义排序规则。
|
||||
|
||||
@@ -123,17 +123,23 @@ class IMManager {
|
||||
case 'onRecvNewMessage':
|
||||
var value = call.arguments['data']['newMessage'];
|
||||
final msg = Utils.toObj(value, (map) => Message.fromJson(map));
|
||||
messageManager.advancedMsgListener.recvNewMessage(msg);
|
||||
messageManager.msgListener.recvNewMessage(msg);
|
||||
break;
|
||||
case 'onRecvMessageRevoked':
|
||||
var value = call.arguments['data']['revokedMessage'];
|
||||
messageManager.advancedMsgListener.recvMessageRevoked(value);
|
||||
var msgID = call.arguments['data']['revokedMessage'];
|
||||
messageManager.msgListener.recvMessageRevoked(msgID);
|
||||
break;
|
||||
case 'onRecvC2CReadReceipt':
|
||||
var value = call.arguments['data']['haveReadMessage'];
|
||||
var value = call.arguments['data']['c2cMessageReadReceipt'];
|
||||
var list =
|
||||
Utils.toList(value, (map) => ReadReceiptInfo.fromJson(map));
|
||||
messageManager.advancedMsgListener.recvC2CReadReceipt(list);
|
||||
messageManager.msgListener.recvC2CMessageReadReceipt(list);
|
||||
break;
|
||||
case 'onRecvGroupReadReceipt':
|
||||
var value = call.arguments['data']['groupMessageReadReceipt'];
|
||||
var list =
|
||||
Utils.toList(value, (map) => ReadReceiptInfo.fromJson(map));
|
||||
messageManager.msgListener.recvGroupMessageReadReceipt(list);
|
||||
break;
|
||||
}
|
||||
} else if (call.method == ListenerType.msgSendProgressListener) {
|
||||
@@ -244,6 +250,12 @@ class IMManager {
|
||||
case 'onReceiveNewInvitation':
|
||||
signalingManager.listener.receiveNewInvitation(u);
|
||||
break;
|
||||
case 'onInviteeAcceptedByOtherDevice':
|
||||
signalingManager.listener.inviteeAcceptedByOtherDevice(u);
|
||||
break;
|
||||
case 'onInviteeRejectedByOtherDevice':
|
||||
signalingManager.listener.inviteeRejectedByOtherDevice(u);
|
||||
break;
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
|
||||
@@ -6,14 +6,14 @@ class MessageManager {
|
||||
|
||||
// List<AdvancedMsgListener> advancedMsgListeners = List.empty(growable: true);
|
||||
OnMsgSendProgressListener? msgSendProgressListener;
|
||||
late OnAdvancedMsgListener advancedMsgListener;
|
||||
late OnAdvancedMsgListener msgListener;
|
||||
|
||||
MessageManager(this._channel);
|
||||
|
||||
/// Set a message listener
|
||||
/// 消息监听
|
||||
Future setAdvancedMsgListener(OnAdvancedMsgListener listener) {
|
||||
this.advancedMsgListener = listener;
|
||||
this.msgListener = listener;
|
||||
// advancedMsgListeners.add(listener);
|
||||
return _channel.invokeMethod(
|
||||
'setAdvancedMsgListener',
|
||||
@@ -123,6 +123,22 @@ class MessageManager {
|
||||
"operationID": Utils.checkOperationID(operationID),
|
||||
}));
|
||||
|
||||
///
|
||||
Future insertGroupMessageToLocalStorage({
|
||||
String? groupID,
|
||||
String? senderID,
|
||||
Message? message,
|
||||
String? operationID,
|
||||
}) =>
|
||||
_channel.invokeMethod(
|
||||
'insertGroupMessageToLocalStorage',
|
||||
_buildParam({
|
||||
"message": message?.toJson(),
|
||||
"groupID": groupID,
|
||||
"senderID": senderID,
|
||||
"operationID": Utils.checkOperationID(operationID),
|
||||
}));
|
||||
|
||||
/// Query the message according to the message id
|
||||
// Future findMessages({required List<String> messageIDList}) =>
|
||||
// _channel.invokeMethod(
|
||||
|
||||
@@ -573,7 +573,8 @@ class FaceElem {
|
||||
}
|
||||
|
||||
class ReadReceiptInfo {
|
||||
String? uid;
|
||||
String? userID;
|
||||
String? groupID;
|
||||
List<String>? msgIDList;
|
||||
int? readTime;
|
||||
int? msgFrom;
|
||||
@@ -581,7 +582,8 @@ class ReadReceiptInfo {
|
||||
int? sessionType;
|
||||
|
||||
ReadReceiptInfo(
|
||||
{this.uid,
|
||||
{this.userID,
|
||||
this.groupID,
|
||||
this.msgIDList,
|
||||
this.readTime,
|
||||
this.msgFrom,
|
||||
@@ -589,7 +591,7 @@ class ReadReceiptInfo {
|
||||
this.sessionType});
|
||||
|
||||
ReadReceiptInfo.fromJson(Map<String, dynamic> json) {
|
||||
uid = json['uid'];
|
||||
userID = json['uid'] ?? json['userID'];
|
||||
if (json['msgIDList'] is List) {
|
||||
msgIDList = (json['msgIDList'] as List).map((e) => '$e').toList();
|
||||
}
|
||||
@@ -601,7 +603,7 @@ class ReadReceiptInfo {
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final data = Map<String, dynamic>();
|
||||
data['uid'] = this.uid;
|
||||
data['userID'] = this.userID;
|
||||
data['msgIDList'] = this.msgIDList;
|
||||
data['readTime'] = this.readTime;
|
||||
data['msgFrom'] = this.msgFrom;
|
||||
|
||||
Reference in New Issue
Block a user