main
hrxiang 3 years ago
parent d64b426c90
commit d120312ac9
  1. 1
      lib/flutter_openim_sdk.dart
  2. 39
      lib/src/manager/im_message_manager.dart
  3. 57
      lib/src/models/search_info.dart

@ -25,6 +25,7 @@ export 'src/manager/im_user_manager.dart';
export 'src/models/conversation_info.dart'; export 'src/models/conversation_info.dart';
export 'src/models/group_info.dart'; export 'src/models/group_info.dart';
export 'src/models/message.dart'; export 'src/models/message.dart';
export 'src/models/search_info.dart';
export 'src/models/signaling_info.dart'; export 'src/models/signaling_info.dart';
export 'src/models/user_info.dart'; export 'src/models/user_info.dart';
export 'src/openim.dart'; export 'src/openim.dart';

@ -522,7 +522,7 @@ class MessageManager {
/// Search local message /// Search local message
/// ///
Future<dynamic> searchLocalMessages({ Future<SearchResult> searchLocalMessages({
required String sourceID, required String sourceID,
required int sessionType, required int sessionType,
List<String> keywordList = const [], List<String> keywordList = const [],
@ -535,23 +535,26 @@ class MessageManager {
int count = 40, int count = 40,
String? operationID, String? operationID,
}) => }) =>
_channel.invokeMethod( _channel
'searchLocalMessages', .invokeMethod(
_buildParam({ 'searchLocalMessages',
'filter': { _buildParam({
'sourceID': sourceID, 'filter': {
'sessionType': sessionType, 'sourceID': sourceID,
'keywordList': keywordList, 'sessionType': sessionType,
'keywordListMatchType': keywordListMatchType, 'keywordList': keywordList,
'senderUserIDList': senderUserIDList, 'keywordListMatchType': keywordListMatchType,
'messageTypeList': messageTypeList, 'senderUserIDList': senderUserIDList,
'searchTimePosition': searchTimePosition, 'messageTypeList': messageTypeList,
'searchTimePeriod': searchTimePeriod, 'searchTimePosition': searchTimePosition,
'pageIndex': pageIndex, 'searchTimePeriod': searchTimePeriod,
'count': count, 'pageIndex': pageIndex,
}, 'count': count,
'operationID': Utils.checkOperationID(operationID), },
})); 'operationID': Utils.checkOperationID(operationID),
}))
.then((value) =>
Utils.toObj(value, (map) => SearchResult.fromJson(map)));
static Map _buildParam(Map param) { static Map _buildParam(Map param) {
param["ManagerName"] = "messageManager"; param["ManagerName"] = "messageManager";

@ -0,0 +1,57 @@
import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
class SearchResult {
int? totalCount;
List<SearchResultItems>? searchResultItems;
SearchResult({this.totalCount, this.searchResultItems});
SearchResult.fromJson(Map<String, dynamic> json) {
totalCount = json['totalCount'];
if (json['searchResultItems'] != null) {
searchResultItems = <SearchResultItems>[];
json['searchResultItems'].forEach((v) {
searchResultItems!.add(SearchResultItems.fromJson(v));
});
}
}
Map<String, dynamic> toJson() {
final data = Map<String, dynamic>();
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<Message>? messageList;
SearchResultItems({this.conversationID, this.messageCount, this.messageList});
SearchResultItems.fromJson(Map<String, dynamic> json) {
conversationID = json['conversationID'];
messageCount = json['messageCount'];
if (json['messageList'] != null) {
messageList = <Message>[];
json['messageList'].forEach((v) {
messageList!.add(Message.fromJson(v));
});
}
}
Map<String, dynamic> toJson() {
final data = Map<String, dynamic>();
data['conversationID'] = this.conversationID;
data['messageCount'] = this.messageCount;
if (this.messageList != null) {
data['messageList'] = this.messageList!.map((v) => v.toJson()).toList();
}
return data;
}
}
Loading…
Cancel
Save