@@ -80,20 +80,53 @@ - (void)fetchConversationWithConversationId:(NSString *)conversationId callback:
8080}
8181
8282- (void )fetchConversationsWithConversationIds : (NSSet *)conversationIds
83- callback : (LCCKArrayResultBlock)callback {
84- AVIMConversationQuery *query = [[LCCKSessionService sharedInstance ].client conversationQuery ];
85- [query whereKey: @" objectId" containedIn: [conversationIds allObjects ]];
86- query.limit = conversationIds.count ;
87- query.option = AVIMConversationQueryOptionWithMessage;
88- query.cacheMaxAge = kAVIMCachePolicyIgnoreCache ;
89- [query findConversationsWithCallback: ^(NSArray *objects, NSError *error) {
90- dispatch_async (dispatch_get_global_queue (DISPATCH_QUEUE_PRIORITY_DEFAULT, 0 ), ^(void ) {
91- [objects makeObjectsPerformSelector: @selector (lastMessage )];
92- dispatch_async (dispatch_get_main_queue (),^{
93- !callback ?: callback (objects, error);
83+ callback : (LCCKArrayResultBlock)callback
84+ {
85+ [self fetchConversationsWithConversationIds: [[conversationIds allObjects ] mutableCopy ]
86+ results: [NSMutableArray array ]
87+ callback: callback];
88+ }
89+
90+ - (void )fetchConversationsWithConversationIds : (NSMutableArray <NSString *> *)conversationIds
91+ results : (NSMutableArray <AVIMConversation *> *)results
92+ callback : (LCCKArrayResultBlock)callback
93+ {
94+ if (conversationIds.count <= 100 ) {
95+ AVIMConversationQuery *query = [[LCCKSessionService sharedInstance ].client conversationQuery ];
96+ [query whereKey: @" objectId" containedIn: conversationIds];
97+ query.limit = conversationIds.count ;
98+ query.option = AVIMConversationQueryOptionWithMessage;
99+ query.cacheMaxAge = kAVIMCachePolicyIgnoreCache ;
100+ [query findConversationsWithCallback: ^(NSArray *objects, NSError *error) {
101+ dispatch_async (dispatch_get_global_queue (DISPATCH_QUEUE_PRIORITY_DEFAULT, 0 ), ^(void ) {
102+ [objects makeObjectsPerformSelector: @selector (lastMessage )];
103+ if (objects) {
104+ [results addObjectsFromArray: objects];
105+ }
106+ dispatch_async (dispatch_get_main_queue (),^{
107+ !callback ?: callback (results, nil );
108+ });
94109 });
95- });
96- }];
110+ }];
111+ } else {
112+ NSRange range = NSMakeRange (0 , 100 );
113+ NSArray <NSString *> *ids = [conversationIds subarrayWithRange: range];
114+ [conversationIds removeObjectsInRange: range];
115+ AVIMConversationQuery *query = [[LCCKSessionService sharedInstance ].client conversationQuery ];
116+ [query whereKey: @" objectId" containedIn: ids];
117+ query.limit = ids.count ;
118+ query.option = AVIMConversationQueryOptionWithMessage;
119+ query.cacheMaxAge = kAVIMCachePolicyIgnoreCache ;
120+ [query findConversationsWithCallback: ^(NSArray *objects, NSError *error) {
121+ dispatch_async (dispatch_get_global_queue (DISPATCH_QUEUE_PRIORITY_DEFAULT, 0 ), ^(void ) {
122+ [objects makeObjectsPerformSelector: @selector (lastMessage )];
123+ if (objects) {
124+ [results addObjectsFromArray: objects];
125+ }
126+ [self fetchConversationsWithConversationIds: conversationIds results: results callback: callback];
127+ });
128+ }];
129+ }
97130}
98131
99132- (void )fetchConversationWithPeerId : (NSString *)peerId callback : (AVIMConversationResultBlock)callback {
0 commit comments