diff --git a/lib/flutter_openim_sdk.dart b/lib/flutter_openim_sdk.dart index 3584577..9e23fcf 100644 --- a/lib/flutter_openim_sdk.dart +++ b/lib/flutter_openim_sdk.dart @@ -25,6 +25,7 @@ export 'src/manager/im_user_manager.dart'; export 'src/models/conversation_info.dart'; export 'src/models/group_info.dart'; export 'src/models/message.dart'; +export 'src/models/search_info.dart'; export 'src/models/signaling_info.dart'; export 'src/models/user_info.dart'; export 'src/openim.dart'; diff --git a/lib/src/manager/im_message_manager.dart b/lib/src/manager/im_message_manager.dart index 0bbeb8c..34b53c8 100644 --- a/lib/src/manager/im_message_manager.dart +++ b/lib/src/manager/im_message_manager.dart @@ -522,7 +522,7 @@ class MessageManager { /// Search local message /// 搜索消息 - Future searchLocalMessages({ + Future searchLocalMessages({ required String sourceID, required int sessionType, List keywordList = const [], @@ -535,23 +535,26 @@ class MessageManager { int count = 40, String? operationID, }) => - _channel.invokeMethod( - 'searchLocalMessages', - _buildParam({ - 'filter': { - 'sourceID': sourceID, - 'sessionType': sessionType, - 'keywordList': keywordList, - 'keywordListMatchType': keywordListMatchType, - 'senderUserIDList': senderUserIDList, - 'messageTypeList': messageTypeList, - 'searchTimePosition': searchTimePosition, - 'searchTimePeriod': searchTimePeriod, - 'pageIndex': pageIndex, - 'count': count, - }, - 'operationID': Utils.checkOperationID(operationID), - })); + _channel + .invokeMethod( + 'searchLocalMessages', + _buildParam({ + 'filter': { + 'sourceID': sourceID, + 'sessionType': sessionType, + 'keywordList': keywordList, + 'keywordListMatchType': keywordListMatchType, + 'senderUserIDList': senderUserIDList, + 'messageTypeList': messageTypeList, + 'searchTimePosition': searchTimePosition, + 'searchTimePeriod': searchTimePeriod, + 'pageIndex': pageIndex, + 'count': count, + }, + 'operationID': Utils.checkOperationID(operationID), + })) + .then((value) => + Utils.toObj(value, (map) => SearchResult.fromJson(map))); static Map _buildParam(Map param) { param["ManagerName"] = "messageManager"; diff --git a/lib/src/models/search_info.dart b/lib/src/models/search_info.dart new file mode 100644 index 0000000..a616fc0 --- /dev/null +++ b/lib/src/models/search_info.dart @@ -0,0 +1,57 @@ +import 'package:flutter_openim_sdk/flutter_openim_sdk.dart'; + +class SearchResult { + int? totalCount; + List? searchResultItems; + + SearchResult({this.totalCount, this.searchResultItems}); + + SearchResult.fromJson(Map json) { + totalCount = json['totalCount']; + if (json['searchResultItems'] != null) { + searchResultItems = []; + json['searchResultItems'].forEach((v) { + searchResultItems!.add(SearchResultItems.fromJson(v)); + }); + } + } + + Map toJson() { + final data = Map(); + data['totalCount'] = this.totalCount; + if (this.searchResultItems != null) { + data['searchResultItems'] = + this.searchResultItems!.map((v) => v.toJson()).toList(); + } + return data; + } +} + +class SearchResultItems { + String? conversationID; + int? messageCount; + List? messageList; + + SearchResultItems({this.conversationID, this.messageCount, this.messageList}); + + SearchResultItems.fromJson(Map json) { + conversationID = json['conversationID']; + messageCount = json['messageCount']; + if (json['messageList'] != null) { + messageList = []; + json['messageList'].forEach((v) { + messageList!.add(Message.fromJson(v)); + }); + } + } + + Map toJson() { + final data = Map(); + data['conversationID'] = this.conversationID; + data['messageCount'] = this.messageCount; + if (this.messageList != null) { + data['messageList'] = this.messageList!.map((v) => v.toJson()).toList(); + } + return data; + } +}