Fix bug
This commit is contained in:
parent
bea820ff27
commit
29eac1bf91
13
CHANGELOG.md
13
CHANGELOG.md
@ -1,6 +1,19 @@
|
|||||||
## 2.3.5+1
|
## 2.3.5+1
|
||||||
|
|
||||||
- Add birthTime for UserInfo
|
- Add birthTime for UserInfo
|
||||||
|
- Add setMessageKvInfoListener method for MessageManager
|
||||||
|
- Add setMessageReactionExtensions method for MessageManager
|
||||||
|
- Add deleteMessageReactionExtensions method for MessageManager
|
||||||
|
- Add getMessageListReactionExtensions method for MessageManager
|
||||||
|
- Add onRecvMessageExtensionsChanged method for OnAdvancedMsgListener
|
||||||
|
- Add onRecvMessageExtensionsDeleted method for OnAdvancedMsgListener
|
||||||
|
- Add OnMessageKvInfoListener listener
|
||||||
|
- Add class KeyValue
|
||||||
|
- Add class UserExInfo
|
||||||
|
- Add class SingleTypeKeyInfoSum
|
||||||
|
- Add class MessageKv
|
||||||
|
- Add class TypeKeySetResult
|
||||||
|
- Add class MessageTypeKeyMapping
|
||||||
|
|
||||||
## 2.3.5
|
## 2.3.5
|
||||||
|
|
||||||
|
@ -34,5 +34,5 @@ android {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
api 'io.openim:core-sdk:2.3.5-t04@aar'
|
api 'io.openim:core-sdk:2.3.5-t08@aar'
|
||||||
}
|
}
|
@ -37,6 +37,24 @@ public class OnAdvancedMsgListener implements open_im_sdk_callback.OnAdvancedMsg
|
|||||||
CommonUtil.emitEvent("advancedMsgListener", "onRecvGroupReadReceipt", values);
|
CommonUtil.emitEvent("advancedMsgListener", "onRecvGroupReadReceipt", values);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onRecvMessageExtensionsChanged(String s, String s1) {
|
||||||
|
final Map<String, String> values = new ArrayMap<>();
|
||||||
|
values.put("id", id);
|
||||||
|
values.put("msgID", s);
|
||||||
|
values.put("list", s1);
|
||||||
|
CommonUtil.emitEvent("advancedMsgListener", "onRecvMessageExtensionsChanged", values);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onRecvMessageExtensionsDeleted(String s, String s1) {
|
||||||
|
final Map<String, String> values = new ArrayMap<>();
|
||||||
|
values.put("id", id);
|
||||||
|
values.put("msgID", s);
|
||||||
|
values.put("list", s1);
|
||||||
|
CommonUtil.emitEvent("advancedMsgListener", "onRecvMessageExtensionsDeleted", values);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRecvMessageRevoked(String s) {
|
public void onRecvMessageRevoked(String s) {
|
||||||
final Map<String, String> values = new ArrayMap<>();
|
final Map<String, String> values = new ArrayMap<>();
|
||||||
|
@ -0,0 +1,12 @@
|
|||||||
|
package io.openim.flutter_openim_sdk.listener;
|
||||||
|
|
||||||
|
import io.openim.flutter_openim_sdk.util.CommonUtil;
|
||||||
|
|
||||||
|
public class OnMessageKvInfoListener implements open_im_sdk_callback.OnMessageKvInfoListener {
|
||||||
|
|
||||||
|
// 经过聚合后的kv,计算了总数,判断了是否包含自己
|
||||||
|
@Override
|
||||||
|
public void onMessageKvInfoChanged(String s) {
|
||||||
|
CommonUtil.emitEvent("messageKvInfoListener", "onMessageKvInfoChanged", s);
|
||||||
|
}
|
||||||
|
}
|
@ -5,6 +5,7 @@ import io.flutter.plugin.common.MethodChannel;
|
|||||||
import io.openim.flutter_openim_sdk.listener.OnAdvancedMsgListener;
|
import io.openim.flutter_openim_sdk.listener.OnAdvancedMsgListener;
|
||||||
import io.openim.flutter_openim_sdk.listener.OnBaseListener;
|
import io.openim.flutter_openim_sdk.listener.OnBaseListener;
|
||||||
import io.openim.flutter_openim_sdk.listener.OnCustomBusinessListener;
|
import io.openim.flutter_openim_sdk.listener.OnCustomBusinessListener;
|
||||||
|
import io.openim.flutter_openim_sdk.listener.OnMessageKvInfoListener;
|
||||||
import io.openim.flutter_openim_sdk.listener.OnMsgSendListener;
|
import io.openim.flutter_openim_sdk.listener.OnMsgSendListener;
|
||||||
import io.openim.flutter_openim_sdk.util.CommonUtil;
|
import io.openim.flutter_openim_sdk.util.CommonUtil;
|
||||||
import open_im_sdk.Open_im_sdk;
|
import open_im_sdk.Open_im_sdk;
|
||||||
@ -484,4 +485,36 @@ public class MessageManager extends BaseManager {
|
|||||||
|
|
||||||
result.success(null);
|
result.success(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setMessageKvInfoListener(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
|
Open_im_sdk.setMessageKvInfoListener(new OnMessageKvInfoListener());
|
||||||
|
|
||||||
|
result.success(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMessageReactionExtensions(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
|
Open_im_sdk.setMessageReactionExtensions(
|
||||||
|
new OnBaseListener(result, methodCall),
|
||||||
|
value(methodCall, "operationID"),
|
||||||
|
jsonValue(methodCall, "message"),
|
||||||
|
jsonValue(methodCall, "list")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void deleteMessageReactionExtensions(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
|
Open_im_sdk.deleteMessageReactionExtensions(
|
||||||
|
new OnBaseListener(result, methodCall),
|
||||||
|
value(methodCall, "operationID"),
|
||||||
|
jsonValue(methodCall, "message"),
|
||||||
|
jsonValue(methodCall, "list")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void getMessageListReactionExtensions(MethodCall methodCall, MethodChannel.Result result) {
|
||||||
|
Open_im_sdk.getMessageListReactionExtensions(
|
||||||
|
new OnBaseListener(result, methodCall),
|
||||||
|
value(methodCall, "operationID"),
|
||||||
|
jsonValue(methodCall, "messageList")
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,7 @@ export 'src/listener/conversation_listener.dart';
|
|||||||
export 'src/listener/custom_business_listener.dart';
|
export 'src/listener/custom_business_listener.dart';
|
||||||
export 'src/listener/friendship_listener.dart';
|
export 'src/listener/friendship_listener.dart';
|
||||||
export 'src/listener/group_listener.dart';
|
export 'src/listener/group_listener.dart';
|
||||||
|
export 'src/listener/message_kv_info_listener.dart';
|
||||||
export 'src/listener/msg_send_progress_listener.dart';
|
export 'src/listener/msg_send_progress_listener.dart';
|
||||||
export 'src/listener/organization_listener.dart';
|
export 'src/listener/organization_listener.dart';
|
||||||
export 'src/listener/signaling_listener.dart';
|
export 'src/listener/signaling_listener.dart';
|
||||||
|
@ -12,4 +12,5 @@ class ListenerType {
|
|||||||
static final workMomentsListener = "workMomentsListener";
|
static final workMomentsListener = "workMomentsListener";
|
||||||
static final organizationListener = "organizationListener";
|
static final organizationListener = "organizationListener";
|
||||||
static final customBusinessListener = "customBusinessListener";
|
static final customBusinessListener = "customBusinessListener";
|
||||||
|
static final messageKvInfoListener = "messageKvInfoListener";
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,8 @@ class OnAdvancedMsgListener {
|
|||||||
Function(String msgId)? onRecvMessageRevoked;
|
Function(String msgId)? onRecvMessageRevoked;
|
||||||
Function(Message msg)? onRecvNewMessage;
|
Function(Message msg)? onRecvNewMessage;
|
||||||
Function(RevokedInfo info)? onRecvMessageRevokedV2;
|
Function(RevokedInfo info)? onRecvMessageRevokedV2;
|
||||||
|
Function(String msgID, List<KeyValue> list)? onRecvMessageExtensionsChanged;
|
||||||
|
Function(String msgID, List<String> list)? onRecvMessageExtensionsDeleted;
|
||||||
|
|
||||||
/// Uniquely identifies
|
/// Uniquely identifies
|
||||||
String id;
|
String id;
|
||||||
@ -17,6 +19,8 @@ class OnAdvancedMsgListener {
|
|||||||
@deprecated this.onRecvMessageRevoked,
|
@deprecated this.onRecvMessageRevoked,
|
||||||
this.onRecvNewMessage,
|
this.onRecvNewMessage,
|
||||||
this.onRecvMessageRevokedV2,
|
this.onRecvMessageRevokedV2,
|
||||||
|
this.onRecvMessageExtensionsChanged,
|
||||||
|
this.onRecvMessageExtensionsDeleted,
|
||||||
}) : id = "id_${DateTime.now().microsecondsSinceEpoch}";
|
}) : id = "id_${DateTime.now().microsecondsSinceEpoch}";
|
||||||
|
|
||||||
/// C2C消息已读回执
|
/// C2C消息已读回执
|
||||||
@ -43,4 +47,15 @@ class OnAdvancedMsgListener {
|
|||||||
void recvMessageRevokedV2(RevokedInfo info) {
|
void recvMessageRevokedV2(RevokedInfo info) {
|
||||||
onRecvMessageRevokedV2?.call(info);
|
onRecvMessageRevokedV2?.call(info);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// 收到拓展消息kv改变
|
||||||
|
void recvMessageExtensionsChanged(String msgID, List<KeyValue> list) {
|
||||||
|
onRecvMessageExtensionsChanged?.call(msgID, list);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// 收到扩展消息被删除
|
||||||
|
/// [list] 被删除的TypeKey
|
||||||
|
void recvMessageExtensionsDeleted(String msgID, List<String> list) {
|
||||||
|
onRecvMessageExtensionsDeleted?.call(msgID, list);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
11
lib/src/listener/message_kv_info_listener.dart
Normal file
11
lib/src/listener/message_kv_info_listener.dart
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
|
||||||
|
|
||||||
|
class OnMessageKvInfoListener {
|
||||||
|
Function(List<MessageKv> list)? onMessageKvInfoChanged;
|
||||||
|
|
||||||
|
OnMessageKvInfoListener({this.onMessageKvInfoChanged});
|
||||||
|
|
||||||
|
void messageKvInfoChanged(List<MessageKv> list) {
|
||||||
|
onMessageKvInfoChanged?.call(list);
|
||||||
|
}
|
||||||
|
}
|
@ -152,6 +152,20 @@ class IMManager {
|
|||||||
var info = Utils.toObj(value, (map) => RevokedInfo.fromJson(map));
|
var info = Utils.toObj(value, (map) => RevokedInfo.fromJson(map));
|
||||||
messageManager.msgListener.recvMessageRevokedV2(info);
|
messageManager.msgListener.recvMessageRevokedV2(info);
|
||||||
break;
|
break;
|
||||||
|
case 'onRecvMessageExtensionsChanged':
|
||||||
|
var msgID = call.arguments['data']['msgID'];
|
||||||
|
var value = call.arguments['data']['list'];
|
||||||
|
var list = Utils.toList(value, (map) => KeyValue.fromJson(map));
|
||||||
|
messageManager.msgListener
|
||||||
|
.recvMessageExtensionsChanged(msgID, list);
|
||||||
|
break;
|
||||||
|
case 'onRecvMessageExtensionsDeleted':
|
||||||
|
var msgID = call.arguments['data']['msgID'];
|
||||||
|
var value = call.arguments['data']['list'];
|
||||||
|
var list = Utils.toList(value, (map) => '$map');
|
||||||
|
messageManager.msgListener
|
||||||
|
.recvMessageExtensionsDeleted(msgID, list);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
} else if (call.method == ListenerType.msgSendProgressListener) {
|
} else if (call.method == ListenerType.msgSendProgressListener) {
|
||||||
String type = call.arguments['type'];
|
String type = call.arguments['type'];
|
||||||
@ -318,8 +332,18 @@ class IMManager {
|
|||||||
String data = call.arguments['data'];
|
String data = call.arguments['data'];
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 'onRecvCustomBusinessMessage':
|
case 'onRecvCustomBusinessMessage':
|
||||||
messageManager.customBusinessListener?.onRecvCustomBusinessMessage
|
messageManager.customBusinessListener
|
||||||
?.call(data);
|
?.recvCustomBusinessMessage(data);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else if (call.method == ListenerType.messageKvInfoListener) {
|
||||||
|
String type = call.arguments['type'];
|
||||||
|
String data = call.arguments['data'];
|
||||||
|
switch (type) {
|
||||||
|
case 'onMessageKvInfoChanged':
|
||||||
|
final list =
|
||||||
|
Utils.toList(data, (map) => MessageKv.fromJson(map)).toList();
|
||||||
|
messageManager.messageKvInfoListener?.messageKvInfoChanged(list);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ class MessageManager {
|
|||||||
OnMsgSendProgressListener? msgSendProgressListener;
|
OnMsgSendProgressListener? msgSendProgressListener;
|
||||||
late OnAdvancedMsgListener msgListener;
|
late OnAdvancedMsgListener msgListener;
|
||||||
OnCustomBusinessListener? customBusinessListener;
|
OnCustomBusinessListener? customBusinessListener;
|
||||||
|
OnMessageKvInfoListener? messageKvInfoListener;
|
||||||
|
|
||||||
MessageManager(this._channel);
|
MessageManager(this._channel);
|
||||||
|
|
||||||
@ -881,6 +882,58 @@ class MessageManager {
|
|||||||
return _channel.invokeMethod('setCustomBusinessListener', _buildParam({}));
|
return _channel.invokeMethod('setCustomBusinessListener', _buildParam({}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///
|
||||||
|
Future setMessageKvInfoListener(OnMessageKvInfoListener listener) {
|
||||||
|
this.messageKvInfoListener = listener;
|
||||||
|
return _channel.invokeMethod('setMessageKvInfoListener', _buildParam({}));
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<List<TypeKeySetResult>> setMessageReactionExtensions({
|
||||||
|
required Message message,
|
||||||
|
List<KeyValue> list = const [],
|
||||||
|
String? operationID,
|
||||||
|
}) =>
|
||||||
|
_channel
|
||||||
|
.invokeMethod(
|
||||||
|
'setMessageReactionExtensions',
|
||||||
|
_buildParam({
|
||||||
|
'message': message.toJson(),
|
||||||
|
'list': list.map((e) => e.toJson()).toList(),
|
||||||
|
"operationID": Utils.checkOperationID(operationID),
|
||||||
|
}))
|
||||||
|
.then((value) =>
|
||||||
|
Utils.toList(value, (map) => TypeKeySetResult.fromJson(map)));
|
||||||
|
|
||||||
|
Future<List<TypeKeySetResult>> deleteMessageReactionExtensions({
|
||||||
|
required Message message,
|
||||||
|
List<String> list = const [],
|
||||||
|
String? operationID,
|
||||||
|
}) =>
|
||||||
|
_channel
|
||||||
|
.invokeMethod(
|
||||||
|
'deleteMessageReactionExtensions',
|
||||||
|
_buildParam({
|
||||||
|
'message': message.toJson(),
|
||||||
|
'list': list,
|
||||||
|
"operationID": Utils.checkOperationID(operationID),
|
||||||
|
}))
|
||||||
|
.then((value) =>
|
||||||
|
Utils.toList(value, (map) => TypeKeySetResult.fromJson(map)));
|
||||||
|
|
||||||
|
Future<List<MessageTypeKeyMapping>> getMessageListReactionExtensions({
|
||||||
|
List<Message> messageList = const [],
|
||||||
|
String? operationID,
|
||||||
|
}) =>
|
||||||
|
_channel
|
||||||
|
.invokeMethod(
|
||||||
|
'getMessageListReactionExtensions',
|
||||||
|
_buildParam({
|
||||||
|
'messageList': messageList.map((e) => e.toJson()).toList(),
|
||||||
|
"operationID": Utils.checkOperationID(operationID),
|
||||||
|
}))
|
||||||
|
.then((value) => Utils.toList(
|
||||||
|
value, (map) => MessageTypeKeyMapping.fromJson(map)));
|
||||||
|
|
||||||
static Map _buildParam(Map param) {
|
static Map _buildParam(Map param) {
|
||||||
param["ManagerName"] = "messageManager";
|
param["ManagerName"] = "messageManager";
|
||||||
return param;
|
return param;
|
||||||
|
@ -1113,3 +1113,173 @@ class RichMessageInfo {
|
|||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///////////////////// 消息修改相关/////////////////////
|
||||||
|
////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class KeyValue {
|
||||||
|
String? typeKey;
|
||||||
|
String? value;
|
||||||
|
int? latestUpdateTime;
|
||||||
|
|
||||||
|
KeyValue({this.typeKey, this.value, this.latestUpdateTime});
|
||||||
|
|
||||||
|
KeyValue.fromJson(Map<String, dynamic> json) {
|
||||||
|
typeKey = json['typeKey'];
|
||||||
|
value = json['value'];
|
||||||
|
latestUpdateTime = json['latestUpdateTime'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final data = Map<String, dynamic>();
|
||||||
|
data['typeKey'] = this.typeKey;
|
||||||
|
data['value'] = this.value;
|
||||||
|
data['latestUpdateTime'] = this.latestUpdateTime;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class UserExInfo {
|
||||||
|
String? userID;
|
||||||
|
String? ex;
|
||||||
|
|
||||||
|
UserExInfo({this.userID, this.ex});
|
||||||
|
|
||||||
|
UserExInfo.fromJson(Map<String, dynamic> json) {
|
||||||
|
userID = json['userID'];
|
||||||
|
ex = json['ex'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final data = Map<String, dynamic>();
|
||||||
|
data['userID'] = this.userID;
|
||||||
|
data['ex'] = this.ex;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class SingleTypeKeyInfoSum {
|
||||||
|
String? typeKey;
|
||||||
|
int? counter;
|
||||||
|
List<UserExInfo>? infoList;
|
||||||
|
bool? isContainSelf;
|
||||||
|
|
||||||
|
SingleTypeKeyInfoSum({
|
||||||
|
this.typeKey,
|
||||||
|
this.counter,
|
||||||
|
this.infoList,
|
||||||
|
this.isContainSelf,
|
||||||
|
});
|
||||||
|
|
||||||
|
SingleTypeKeyInfoSum.fromJson(Map<String, dynamic> json) {
|
||||||
|
typeKey = json['typeKey'];
|
||||||
|
counter = json['counter'];
|
||||||
|
infoList = json['infoList'] == null
|
||||||
|
? null
|
||||||
|
: (json['infoList'] as List)
|
||||||
|
.map((e) => UserExInfo.fromJson(e))
|
||||||
|
.toList();
|
||||||
|
isContainSelf = json['isContainSelf'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final data = Map<String, dynamic>();
|
||||||
|
data['typeKey'] = this.typeKey;
|
||||||
|
data['counter'] = this.counter;
|
||||||
|
data['infoList'] = this.infoList?.map((e) => e.toJson()).toList();
|
||||||
|
data['isContainSelf'] = this.isContainSelf;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class MessageKv {
|
||||||
|
String? clientMsgID;
|
||||||
|
List<SingleTypeKeyInfoSum>? changedKvList;
|
||||||
|
|
||||||
|
MessageKv({this.clientMsgID, this.changedKvList});
|
||||||
|
|
||||||
|
MessageKv.fromJson(Map<String, dynamic> json) {
|
||||||
|
clientMsgID = json['clientMsgID'];
|
||||||
|
changedKvList = json['changedKvList'] == null
|
||||||
|
? null
|
||||||
|
: (json['changedKvList'] as List)
|
||||||
|
.map((e) => SingleTypeKeyInfoSum.fromJson(e))
|
||||||
|
.toList();
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final data = Map<String, dynamic>();
|
||||||
|
data['clientMsgID'] = this.clientMsgID;
|
||||||
|
data['changedKvList'] = this.changedKvList?.map((e) => e.toJson()).toList();
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class TypeKeySetResult {
|
||||||
|
int? errCode;
|
||||||
|
String? errMsg;
|
||||||
|
String? typeKey;
|
||||||
|
int? latestUpdateTime;
|
||||||
|
String? value;
|
||||||
|
|
||||||
|
TypeKeySetResult(
|
||||||
|
{this.errCode,
|
||||||
|
this.errMsg,
|
||||||
|
this.typeKey,
|
||||||
|
this.latestUpdateTime,
|
||||||
|
this.value});
|
||||||
|
|
||||||
|
TypeKeySetResult.fromJson(Map<String, dynamic> json) {
|
||||||
|
errCode = json['errCode'];
|
||||||
|
errMsg = json['errMsg'];
|
||||||
|
typeKey = json['typeKey'];
|
||||||
|
latestUpdateTime = json['latestUpdateTime'];
|
||||||
|
value = json['value'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['errCode'] = this.errCode;
|
||||||
|
data['errMsg'] = this.errMsg;
|
||||||
|
data['typeKey'] = this.typeKey;
|
||||||
|
data['latestUpdateTime'] = this.latestUpdateTime;
|
||||||
|
data['value'] = this.value;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class MessageTypeKeyMapping {
|
||||||
|
int? errCode;
|
||||||
|
String? errMsg;
|
||||||
|
Map<String, KeyValue>? reactionExtensionList;
|
||||||
|
String? clientMsgID;
|
||||||
|
|
||||||
|
MessageTypeKeyMapping(
|
||||||
|
{this.errCode,
|
||||||
|
this.errMsg,
|
||||||
|
this.reactionExtensionList,
|
||||||
|
this.clientMsgID});
|
||||||
|
|
||||||
|
MessageTypeKeyMapping.fromJson(Map<String, dynamic> json) {
|
||||||
|
errCode = json['errCode'];
|
||||||
|
errMsg = json['errMsg'];
|
||||||
|
reactionExtensionList = json['reactionExtensionList'] != null
|
||||||
|
? (json['reactionExtensionList'] as Map)
|
||||||
|
.map((key, value) => MapEntry(key, KeyValue.fromJson(value)))
|
||||||
|
: null;
|
||||||
|
clientMsgID = json['clientMsgID'];
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||||
|
data['errCode'] = this.errCode;
|
||||||
|
data['errMsg'] = this.errMsg;
|
||||||
|
if (this.reactionExtensionList != null) {
|
||||||
|
data['reactionExtensionList'] = this
|
||||||
|
.reactionExtensionList!
|
||||||
|
.map((key, value) => MapEntry(key, value.toJson()));
|
||||||
|
}
|
||||||
|
data['clientMsgID'] = this.clientMsgID;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user