Skip to content

Commit 82a09f0

Browse files
committed
support insertOldMessages:completion: to atomically insert old messages
1 parent 8487665 commit 82a09f0

3 files changed

Lines changed: 20 additions & 4 deletions

File tree

Example/MessageDisplayKitLeanchatExample/MessageDisplayKitLeanchatExample/Sections/Pages/IM/LeanChatMessageTableViewController.m

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,7 @@ - (void)loadMoreMessagesScrollTotop {
362362
self.loadingMoreMessage = YES;
363363
XHMessage* message=self.messages[0];
364364
WEAKSELF
365-
[self.conversation queryMessagesBeforeId:nil timestamp:[message.timestamp timeIntervalSince1970]*1000 limit:20 callback:^(NSArray *typedMessages, NSError *error) {
365+
[self.conversation queryMessagesBeforeId:nil timestamp:[message.timestamp timeIntervalSince1970]*1000 limit:kOnePageSize callback:^(NSArray *typedMessages, NSError *error) {
366366
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
367367
NSMutableArray* messages=[NSMutableArray array];
368368
for(AVIMTypedMessage* typedMessage in typedMessages){
@@ -374,8 +374,9 @@ - (void)loadMoreMessagesScrollTotop {
374374
}
375375
}
376376
dispatch_async(dispatch_get_main_queue(), ^{
377-
[weakSelf insertOldMessages:messages];
378-
weakSelf.loadingMoreMessage=NO;
377+
[weakSelf insertOldMessages:messages completion:^{
378+
weakSelf.loadingMoreMessage=NO;
379+
}];
379380
});
380381
});
381382
}];

MessageDisplayKit/Classes/Controllers/XHMessageTableViewController/XHMessageTableViewController.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,14 @@
257257
*/
258258
- (void)insertOldMessages:(NSArray *)oldMessages;
259259

260+
/**
261+
* 同上,增加了 completion 来通知消息插入完毕
262+
*
263+
* @param oldMessages 目标的旧消息数据
264+
* @param completion insert 完成回调
265+
*/
266+
- (void)insertOldMessages:(NSArray *)oldMessages completion:(void (^)())completion ;
267+
260268
#pragma mark - Messages view controller
261269
/**
262270
* 完成发送消息的函数

MessageDisplayKit/Classes/Controllers/XHMessageTableViewController/XHMessageTableViewController.m

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ - (void)removeMessageAtIndexPath:(NSIndexPath *)indexPath {
261261

262262
static CGPoint delayOffset = {0.0};
263263
// http://stackoverflow.com/a/11602040 Keep UITableView static when inserting rows at the top
264-
- (void)insertOldMessages:(NSArray *)oldMessages {
264+
- (void)insertOldMessages:(NSArray *)oldMessages completion:(void (^)())completion {
265265
WEAKSELF
266266
[self exChangeMessageDataSourceQueue:^{
267267
NSMutableArray *messages = [[NSMutableArray alloc] initWithArray:weakSelf.messages];
@@ -291,10 +291,17 @@ - (void)insertOldMessages:(NSArray *)oldMessages {
291291
[UIView setAnimationsEnabled:YES];
292292

293293
[weakSelf.messageTableView setContentOffset:delayOffset animated:NO];
294+
if (completion) {
295+
completion();
296+
}
294297
}];
295298
}];
296299
}
297300

301+
- (void)insertOldMessages:(NSArray *)oldMessages {
302+
[self insertOldMessages:oldMessages completion:nil];
303+
}
304+
298305
#pragma mark - Propertys
299306

300307
- (NSMutableArray *)messages {

0 commit comments

Comments
 (0)