main
hrxiang 3 years ago
parent 6edf9b74fa
commit d5e3947878
  1. 5
      CHANGELOG.md
  2. 2
      android/build.gradle
  3. 6
      android/src/main/java/io/openim/flutter_openim_sdk/listener/OnSignalingListener.java
  4. 12
      android/src/main/java/io/openim/flutter_openim_sdk/manager/ConversationManager.java
  5. 7
      android/src/main/java/io/openim/flutter_openim_sdk/manager/GroupManager.java
  6. 8
      android/src/main/java/io/openim/flutter_openim_sdk/manager/MessageManager.java
  7. 2
      android/src/main/java/io/openim/flutter_openim_sdk/manager/WorkMomentsManager.java
  8. 10
      ios/Classes/Module/ConversationManager.swift
  9. 5
      ios/Classes/Module/GroupManager.swift
  10. 5
      ios/Classes/Module/MessageManager.swift
  11. 8
      ios/Classes/Module/SignalingManager.swift
  12. 7
      ios/Framework/OpenIMCore.framework/Headers/Open_im_sdk.objc.h
  13. 2
      ios/Framework/OpenIMCore.framework/Headers/Open_im_sdk_callback.objc.h
  14. BIN
      ios/Framework/OpenIMCore.framework/OpenIMCore
  15. 7
      lib/src/listener/signaling_listener.dart
  16. 18
      lib/src/manager/im_conversation_manager.dart
  17. 25
      lib/src/manager/im_group_manager.dart
  18. 3
      lib/src/manager/im_manager.dart
  19. 35
      lib/src/manager/im_message_manager.dart
  20. 13
      lib/src/models/search_info.dart

@ -6,6 +6,11 @@
4.ConverstaionInfo new add isNotInGroup field</br> 4.ConverstaionInfo new add isNotInGroup field</br>
5.New at type</br> 5.New at type</br>
6.New work moments</br> 6.New work moments</br>
7.New global search</br>
8.New getHistoryMessageListReverse method</br>
9.New getAtAllTag method</br>
10.New resetConversationGroupAtType method</br>
11.New searchGroups method</br>
## 2.0.0+5 ## 2.0.0+5

@ -41,5 +41,5 @@ android {
} }
} }
dependencies { dependencies {
implementation 'io.openim:client-sdk:2.0.42@aar' implementation 'io.openim:client-sdk:2.0.45@aar'
} }

@ -3,6 +3,7 @@ package io.openim.flutter_openim_sdk.listener;
import io.openim.flutter_openim_sdk.util.CommonUtil; import io.openim.flutter_openim_sdk.util.CommonUtil;
public class OnSignalingListener implements open_im_sdk_callback.OnSignalingListener { public class OnSignalingListener implements open_im_sdk_callback.OnSignalingListener {
@Override @Override
public void onInvitationCancelled(String s) { public void onInvitationCancelled(String s) {
CommonUtil.emitEvent("signalingListener", "onInvitationCancelled", s); CommonUtil.emitEvent("signalingListener", "onInvitationCancelled", s);
@ -37,4 +38,9 @@ public class OnSignalingListener implements open_im_sdk_callback.OnSignalingList
public void onReceiveNewInvitation(String s) { public void onReceiveNewInvitation(String s) {
CommonUtil.emitEvent("signalingListener", "onReceiveNewInvitation", s); CommonUtil.emitEvent("signalingListener", "onReceiveNewInvitation", s);
} }
@Override
public void onHangUp(String s) {
CommonUtil.emitEvent("signalingListener", "onHangUp", s);
}
} }

@ -142,4 +142,16 @@ public class ConversationManager extends BaseManager {
value(methodCall, "operationID") value(methodCall, "operationID")
); );
} }
public void resetConversationGroupAtType(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.resetConversationGroupAtType(
new OnBaseListener(result),
value(methodCall, "operationID"),
value(methodCall, "conversationID")
);
}
public void getAtAllTag(MethodCall methodCall, MethodChannel.Result result) {
CommonUtil.runMainThreadReturn(result, Open_im_sdk.getAtAllTag());
}
} }

@ -183,4 +183,11 @@ public class GroupManager extends BaseManager {
value(methodCall, "groupNickname") value(methodCall, "groupNickname")
); );
} }
public void searchGroups(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.searchGroups(new OnBaseListener(result),
value(methodCall, "operationID"),
jsonValue(methodCall, "searchParam")
);
}
} }

@ -381,4 +381,12 @@ public class MessageManager extends BaseManager {
value(methodCall, "groupID") value(methodCall, "groupID")
); );
} }
public void getHistoryMessageListReverse(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.getHistoryMessageListReverse(
new OnBaseListener(result),
value(methodCall, "operationID"),
jsonValue(methodCall)
);
}
} }

@ -8,7 +8,7 @@ import open_im_sdk.Open_im_sdk;
public class WorkMomentsManager extends BaseManager { public class WorkMomentsManager extends BaseManager {
void setWorkMomentsListener(MethodCall methodCall, MethodChannel.Result result) { public void setWorkMomentsListener(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.setWorkMomentsListener(new OnWorkMomentsListener()); Open_im_sdk.setWorkMomentsListener(new OnWorkMomentsListener());
} }

@ -22,6 +22,8 @@ public class ConversationManager: BaseServiceManager {
self["setOneConversationPrivateChat"] = setOneConversationPrivateChat self["setOneConversationPrivateChat"] = setOneConversationPrivateChat
self["deleteConversationFromLocalAndSvr"] = deleteConversationFromLocalAndSvr self["deleteConversationFromLocalAndSvr"] = deleteConversationFromLocalAndSvr
self["deleteAllConversationFromLocal"] = deleteAllConversationFromLocal self["deleteAllConversationFromLocal"] = deleteAllConversationFromLocal
self["resetConversationGroupAtType"] = resetConversationGroupAtType
self["getAtAllTag"] = getAtAllTag
} }
func setConversationListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ func setConversationListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
@ -93,6 +95,14 @@ public class ConversationManager: BaseServiceManager {
func deleteAllConversationFromLocal(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ func deleteAllConversationFromLocal(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
Open_im_sdkDeleteAllConversationFromLocal(BaseCallback(result: result), methodCall[string: "operationID"]) Open_im_sdkDeleteAllConversationFromLocal(BaseCallback(result: result), methodCall[string: "operationID"])
} }
func resetConversationGroupAtType(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
Open_im_sdkResetConversationGroupAtType(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "conversationID"])
}
func getAtAllTag(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
callBack(result, Open_im_sdkGetAtAllTag())
}
} }

@ -25,6 +25,7 @@ public class GroupManager: BaseServiceManager {
self["changeGroupMute"] = changeGroupMute self["changeGroupMute"] = changeGroupMute
self["changeGroupMemberMute"] = changeGroupMemberMute self["changeGroupMemberMute"] = changeGroupMemberMute
self["setGroupMemberNickname"] = setGroupMemberNickname self["setGroupMemberNickname"] = setGroupMemberNickname
self["searchGroups"] = searchGroups
} }
func setGroupListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ func setGroupListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
@ -110,6 +111,10 @@ public class GroupManager: BaseServiceManager {
func setGroupMemberNickname(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ func setGroupMemberNickname(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
Open_im_sdkSetGroupMemberNickname(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "gid"], methodCall[string:"uid"],methodCall[string:"groupNickname"]) Open_im_sdkSetGroupMemberNickname(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "gid"], methodCall[string:"uid"],methodCall[string:"groupNickname"])
} }
func searchGroups(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
Open_im_sdkSearchGroups(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[jsonString: "searchParam"])
}
} }
public class GroupListener: NSObject, Open_im_sdk_callbackOnGroupListenerProtocol { public class GroupListener: NSObject, Open_im_sdk_callbackOnGroupListenerProtocol {

@ -43,6 +43,7 @@ public class MessageManager: BaseServiceManager {
self["markMessageAsReadByConID"] = markMessageAsReadByConID self["markMessageAsReadByConID"] = markMessageAsReadByConID
self["clearC2CHistoryMessageFromLocalAndSvr"] = clearC2CHistoryMessageFromLocalAndSvr self["clearC2CHistoryMessageFromLocalAndSvr"] = clearC2CHistoryMessageFromLocalAndSvr
self["clearGroupHistoryMessageFromLocalAndSvr"] = clearGroupHistoryMessageFromLocalAndSvr self["clearGroupHistoryMessageFromLocalAndSvr"] = clearGroupHistoryMessageFromLocalAndSvr
self["getHistoryMessageListReverse"] = getHistoryMessageListReverse
} }
func setAdvancedMsgListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){ func setAdvancedMsgListener(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
@ -209,6 +210,10 @@ public class MessageManager: BaseServiceManager {
Open_im_sdkClearGroupHistoryMessageFromLocalAndSvr(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"]) Open_im_sdkClearGroupHistoryMessageFromLocalAndSvr(BaseCallback(result: result), methodCall[string: "operationID"], methodCall[string: "groupID"])
} }
func getHistoryMessageListReverse(methodCall: FlutterMethodCall, result: @escaping FlutterResult){
Open_im_sdkGetHistoryMessageListReverse(BaseCallback(result: result), methodCall[string: "operationID"], methodCall.toJsonString())
}
public class SendMsgProgressListener: NSObject, Open_im_sdk_callbackSendMsgCallBackProtocol { public class SendMsgProgressListener: NSObject, Open_im_sdk_callbackSendMsgCallBackProtocol {
private let channel: FlutterMethodChannel private let channel: FlutterMethodChannel
private let result: FlutterResult private let result: FlutterResult

@ -44,7 +44,7 @@ public class SignalingManager: BaseServiceManager {
} }
} }
public class SignalingListener: NSObject, Open_im_sdk_callbackOnSignalingListenerProtocol { public class SignalingListener: NSObject, Open_im_sdk_callbackOnSignalingListenerProtocol {
private let channel:FlutterMethodChannel private let channel:FlutterMethodChannel
init(channel:FlutterMethodChannel) { init(channel:FlutterMethodChannel) {
@ -78,5 +78,9 @@ public class SignalingListener: NSObject, Open_im_sdk_callbackOnSignalingListene
public func onReceiveNewInvitation(_ s: String?) { public func onReceiveNewInvitation(_ s: String?) {
CommonUtil.emitEvent(channel: channel, method: "signalingListener", type: "onReceiveNewInvitation", errCode: nil, errMsg: nil, data: s) CommonUtil.emitEvent(channel: channel, method: "signalingListener", type: "onReceiveNewInvitation", errCode: nil, errMsg: nil, data: s)
} }
public func onHangUp(_ s: String?) {
CommonUtil.emitEvent(channel: channel, method: "signalingListener", type: "onHangUp", errCode: nil, errMsg: nil, data: s)
}
} }

@ -120,6 +120,9 @@ FOUNDATION_EXPORT NSString* _Nonnull Open_im_sdkGetConversationIDBySessionType(N
FOUNDATION_EXPORT void Open_im_sdkGetConversationListSplit(id<Open_im_sdk_callbackBase> _Nullable callback, NSString* _Nullable operationID, long offset, long count); FOUNDATION_EXPORT void Open_im_sdkGetConversationListSplit(id<Open_im_sdk_callbackBase> _Nullable callback, NSString* _Nullable operationID, long offset, long count);
/**
* deprecated
*/
FOUNDATION_EXPORT void Open_im_sdkGetConversationRecvMessageOpt(id<Open_im_sdk_callbackBase> _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable conversationIDList); FOUNDATION_EXPORT void Open_im_sdkGetConversationRecvMessageOpt(id<Open_im_sdk_callbackBase> _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable conversationIDList);
FOUNDATION_EXPORT void Open_im_sdkGetDepartmentMember(id<Open_im_sdk_callbackBase> _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable departmentID, long offset, long count); FOUNDATION_EXPORT void Open_im_sdkGetDepartmentMember(id<Open_im_sdk_callbackBase> _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable departmentID, long offset, long count);
@ -138,6 +141,8 @@ FOUNDATION_EXPORT void Open_im_sdkGetGroupsInfo(id<Open_im_sdk_callbackBase> _Nu
FOUNDATION_EXPORT void Open_im_sdkGetHistoryMessageList(id<Open_im_sdk_callbackBase> _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable getMessageOptions); FOUNDATION_EXPORT void Open_im_sdkGetHistoryMessageList(id<Open_im_sdk_callbackBase> _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable getMessageOptions);
FOUNDATION_EXPORT void Open_im_sdkGetHistoryMessageListReverse(id<Open_im_sdk_callbackBase> _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable getMessageOptions);
FOUNDATION_EXPORT void Open_im_sdkGetJoinedGroupList(id<Open_im_sdk_callbackBase> _Nullable callback, NSString* _Nullable operationID); FOUNDATION_EXPORT void Open_im_sdkGetJoinedGroupList(id<Open_im_sdk_callbackBase> _Nullable callback, NSString* _Nullable operationID);
FOUNDATION_EXPORT int32_t Open_im_sdkGetLoginStatus(void); FOUNDATION_EXPORT int32_t Open_im_sdkGetLoginStatus(void);
@ -225,6 +230,8 @@ FOUNDATION_EXPORT void Open_im_sdkRevokeMessage(id<Open_im_sdk_callbackBase> _Nu
FOUNDATION_EXPORT NSString* _Nonnull Open_im_sdkSdkVersion(void); FOUNDATION_EXPORT NSString* _Nonnull Open_im_sdkSdkVersion(void);
FOUNDATION_EXPORT void Open_im_sdkSearchGroups(id<Open_im_sdk_callbackBase> _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable searchParam);
FOUNDATION_EXPORT void Open_im_sdkSearchLocalMessages(id<Open_im_sdk_callbackBase> _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable searchParam); FOUNDATION_EXPORT void Open_im_sdkSearchLocalMessages(id<Open_im_sdk_callbackBase> _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable searchParam);
FOUNDATION_EXPORT void Open_im_sdkSendMessage(id<Open_im_sdk_callbackSendMsgCallBack> _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable message, NSString* _Nullable recvID, NSString* _Nullable groupID, NSString* _Nullable offlinePushInfo); FOUNDATION_EXPORT void Open_im_sdkSendMessage(id<Open_im_sdk_callbackSendMsgCallBack> _Nullable callback, NSString* _Nullable operationID, NSString* _Nullable message, NSString* _Nullable recvID, NSString* _Nullable groupID, NSString* _Nullable offlinePushInfo);

@ -93,6 +93,7 @@
@end @end
@protocol Open_im_sdk_callbackOnSignalingListener <NSObject> @protocol Open_im_sdk_callbackOnSignalingListener <NSObject>
- (void)onHangUp:(NSString* _Nullable)hangUpCallback;
- (void)onInvitationCancelled:(NSString* _Nullable)invitationCancelledCallback; - (void)onInvitationCancelled:(NSString* _Nullable)invitationCancelledCallback;
- (void)onInvitationTimeout:(NSString* _Nullable)invitationTimeoutCallback; - (void)onInvitationTimeout:(NSString* _Nullable)invitationTimeoutCallback;
- (void)onInviteeAccepted:(NSString* _Nullable)inviteeAcceptedCallback; - (void)onInviteeAccepted:(NSString* _Nullable)inviteeAcceptedCallback;
@ -229,6 +230,7 @@
@property(strong, readonly) _Nonnull id _ref; @property(strong, readonly) _Nonnull id _ref;
- (nonnull instancetype)initWithRef:(_Nonnull id)ref; - (nonnull instancetype)initWithRef:(_Nonnull id)ref;
- (void)onHangUp:(NSString* _Nullable)hangUpCallback;
- (void)onInvitationCancelled:(NSString* _Nullable)invitationCancelledCallback; - (void)onInvitationCancelled:(NSString* _Nullable)invitationCancelledCallback;
- (void)onInvitationTimeout:(NSString* _Nullable)invitationTimeoutCallback; - (void)onInvitationTimeout:(NSString* _Nullable)invitationTimeoutCallback;
- (void)onInviteeAccepted:(NSString* _Nullable)inviteeAcceptedCallback; - (void)onInviteeAccepted:(NSString* _Nullable)inviteeAcceptedCallback;

@ -8,6 +8,7 @@ class OnSignalingListener {
final Function(SignalingInfo info)? onReceiveNewInvitation; final Function(SignalingInfo info)? onReceiveNewInvitation;
final Function(SignalingInfo info)? onInviteeRejectedByOtherDevice; final Function(SignalingInfo info)? onInviteeRejectedByOtherDevice;
final Function(SignalingInfo info)? onInviteeAcceptedByOtherDevice; final Function(SignalingInfo info)? onInviteeAcceptedByOtherDevice;
final Function(SignalingInfo info)? onHangup;
OnSignalingListener({ OnSignalingListener({
this.onInvitationCancelled, this.onInvitationCancelled,
@ -17,6 +18,7 @@ class OnSignalingListener {
this.onReceiveNewInvitation, this.onReceiveNewInvitation,
this.onInviteeAcceptedByOtherDevice, this.onInviteeAcceptedByOtherDevice,
this.onInviteeRejectedByOtherDevice, this.onInviteeRejectedByOtherDevice,
this.onHangup,
}); });
/// ///
@ -53,4 +55,9 @@ class OnSignalingListener {
void inviteeRejectedByOtherDevice(SignalingInfo info) { void inviteeRejectedByOtherDevice(SignalingInfo info) {
onInviteeRejectedByOtherDevice?.call(info); onInviteeRejectedByOtherDevice?.call(info);
} }
///
void hangup(SignalingInfo info) {
onHangup?.call(info);
}
} }

@ -243,6 +243,24 @@ class ConversationManager {
"operationID": Utils.checkOperationID(operationID), "operationID": Utils.checkOperationID(operationID),
})); }));
/// Reset group converstaion at type
/// at标准位
Future<dynamic> resetConversationGroupAtType({
required String conversationID,
String? operationID,
}) =>
_channel.invokeMethod(
'resetConversationGroupAtType',
_buildParam({
"conversationID": conversationID,
"operationID": Utils.checkOperationID(operationID),
}));
/// Get @ all member tag
/// at所有人标识
Future<dynamic> getAtAllTag() =>
_channel.invokeMethod('getAtAllTag', _buildParam({}));
/// Custom sort for conversation list /// Custom sort for conversation list
/// ///
List<ConversationInfo> simpleSort(List<ConversationInfo> list) => list List<ConversationInfo> simpleSort(List<ConversationInfo> list) => list

@ -382,6 +382,31 @@ class GroupManager {
'operationID': Utils.checkOperationID(operationID), 'operationID': Utils.checkOperationID(operationID),
})); }));
/// Search group
///
/// [keywordList]
/// [isSearchGroupID] ID(false)false
/// [isSearchGroupName] false
Future<List<GroupInfo>> searchGroups({
List<String> keywordList = const [],
bool isSearchGroupID = false,
bool isSearchGroupName = false,
String? operationID,
}) =>
_channel
.invokeMethod(
'searchGroups',
_buildParam({
'searchParam': {
'keywordList': keywordList,
'isSearchGroupID': isSearchGroupID,
'isSearchGroupName': isSearchGroupName,
},
'operationID': Utils.checkOperationID(operationID),
}))
.then(
(value) => Utils.toList(value, (map) => GroupInfo.fromJson(map)));
static Map _buildParam(Map param) { static Map _buildParam(Map param) {
param["ManagerName"] = "groupManager"; param["ManagerName"] = "groupManager";
return param; return param;

@ -258,6 +258,9 @@ class IMManager {
case 'onInviteeRejectedByOtherDevice': case 'onInviteeRejectedByOtherDevice':
signalingManager.listener.inviteeRejectedByOtherDevice(u); signalingManager.listener.inviteeRejectedByOtherDevice(u);
break; break;
case 'onHangUp':
signalingManager.listener.hangup(u);
break;
} }
} else if (call.method == ListenerType.workMomentsListener) { } else if (call.method == ListenerType.workMomentsListener) {
String type = call.arguments['type']; String type = call.arguments['type'];

@ -529,8 +529,7 @@ class MessageManager {
/// Search local message /// Search local message
/// ///
/// [sourceID]IDID /// [conversationID] null
/// [sessionType]120
/// [keywordList] /// [keywordList]
/// [keywordListMatchType]12 /// [keywordListMatchType]12
/// [senderUserIDList]uid列表 /// [senderUserIDList]uid列表
@ -540,8 +539,7 @@ class MessageManager {
/// [pageIndex] /// [pageIndex]
/// [count] /// [count]
Future<SearchResult> searchLocalMessages({ Future<SearchResult> searchLocalMessages({
required String sourceID, String? conversationID,
required int sessionType,
List<String> keywordList = const [], List<String> keywordList = const [],
int keywordListMatchType = 0, int keywordListMatchType = 0,
List<String> senderUserIDList = const [], List<String> senderUserIDList = const [],
@ -557,8 +555,7 @@ class MessageManager {
'searchLocalMessages', 'searchLocalMessages',
_buildParam({ _buildParam({
'filter': { 'filter': {
'sourceID': sourceID, 'conversationID': conversationID,
'sessionType': sessionType,
'keywordList': keywordList, 'keywordList': keywordList,
'keywordListMatchType': keywordListMatchType, 'keywordListMatchType': keywordListMatchType,
'senderUserIDList': senderUserIDList, 'senderUserIDList': senderUserIDList,
@ -649,6 +646,32 @@ class MessageManager {
"operationID": Utils.checkOperationID(operationID), "operationID": Utils.checkOperationID(operationID),
})); }));
/// Find all history message
///
/// [userID]id
/// [conversationID] id
/// [groupID]id
Future<List<Message>> getHistoryMessageListReverse({
String? userID,
String? groupID,
String? conversationID,
Message? startMsg,
int? count,
String? operationID,
}) =>
_channel
.invokeMethod(
'getHistoryMessageListReverse',
_buildParam({
'userID': userID ?? '',
'groupID': groupID ?? '',
'conversationID': conversationID ?? '',
'startClientMsgID': startMsg?.clientMsgID ?? '',
'count': count ?? 10,
'operationID': Utils.checkOperationID(operationID),
}))
.then((value) => Utils.toList(value, (map) => Message.fromJson(map)));
static Map _buildParam(Map param) { static Map _buildParam(Map param) {
param["ManagerName"] = "messageManager"; param["ManagerName"] = "messageManager";
return param; return param;

@ -32,7 +32,12 @@ class SearchResultItems {
/// ID /// ID
String? conversationID; String? conversationID;
/// /// 1234
int? conversationType;
String? showName;
String? faceURL;
///
int? messageCount; int? messageCount;
/// [Message] /// [Message]
@ -42,6 +47,9 @@ class SearchResultItems {
SearchResultItems.fromJson(Map<String, dynamic> json) { SearchResultItems.fromJson(Map<String, dynamic> json) {
conversationID = json['conversationID']; conversationID = json['conversationID'];
conversationType = json['conversationType'];
showName = json['showName'];
faceURL = json['faceURL'];
messageCount = json['messageCount']; messageCount = json['messageCount'];
if (json['messageList'] != null) { if (json['messageList'] != null) {
messageList = <Message>[]; messageList = <Message>[];
@ -54,6 +62,9 @@ class SearchResultItems {
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final data = Map<String, dynamic>(); final data = Map<String, dynamic>();
data['conversationID'] = this.conversationID; data['conversationID'] = this.conversationID;
data['conversationType'] = this.conversationType;
data['showName'] = this.showName;
data['faceURL'] = this.faceURL;
data['messageCount'] = this.messageCount; data['messageCount'] = this.messageCount;
if (this.messageList != null) { if (this.messageList != null) {
data['messageList'] = this.messageList!.map((v) => v.toJson()).toList(); data['messageList'] = this.messageList!.map((v) => v.toJson()).toList();

Loading…
Cancel
Save