diff --git a/Signal/src/view controllers/MessagesViewController.m b/Signal/src/view controllers/MessagesViewController.m index 9ed4ad23d..de8d37d21 100644 --- a/Signal/src/view controllers/MessagesViewController.m +++ b/Signal/src/view controllers/MessagesViewController.m @@ -687,40 +687,42 @@ typedef enum : NSUInteger { return; } - for (YapDatabaseViewRowChange *rowChange in messageRowChanges) - { - switch (rowChange.type) + [self.collectionView performBatchUpdates:^{ + for (YapDatabaseViewRowChange *rowChange in messageRowChanges) { - case YapDatabaseViewChangeDelete : - { - [self.collectionView deleteItemsAtIndexPaths:@[ rowChange.indexPath ]]; - break; - } - case YapDatabaseViewChangeInsert : - { - [self.collectionView insertItemsAtIndexPaths:@[ rowChange.newIndexPath ]]; - break; - } - case YapDatabaseViewChangeMove : - { - [self.collectionView deleteItemsAtIndexPaths:@[ rowChange.indexPath]]; - [self.collectionView insertItemsAtIndexPaths:@[ rowChange.newIndexPath]]; - break; - } - case YapDatabaseViewChangeUpdate : + switch (rowChange.type) { - NSMutableArray *rowsToUpdate = [@[rowChange.indexPath] mutableCopy]; - if (_lastDeliveredMessageIndexPath) { - [rowsToUpdate addObject:_lastDeliveredMessageIndexPath]; + case YapDatabaseViewChangeDelete : + { + [self.collectionView deleteItemsAtIndexPaths:@[ rowChange.indexPath ]]; + break; + } + case YapDatabaseViewChangeInsert : + { + [self.collectionView insertItemsAtIndexPaths:@[ rowChange.newIndexPath ]]; + break; + } + case YapDatabaseViewChangeMove : + { + [self.collectionView deleteItemsAtIndexPaths:@[ rowChange.indexPath]]; + [self.collectionView insertItemsAtIndexPaths:@[ rowChange.newIndexPath]]; + break; + } + case YapDatabaseViewChangeUpdate : + { + NSMutableArray *rowsToUpdate = [@[rowChange.indexPath] mutableCopy]; + if (_lastDeliveredMessageIndexPath) { + [rowsToUpdate addObject:_lastDeliveredMessageIndexPath]; + } + + [self.collectionView reloadItemsAtIndexPaths:rowsToUpdate]; + break; } - - [self.collectionView reloadItemsAtIndexPaths:rowsToUpdate]; - break; } } - } - - [self finishReceivingMessage]; + } completion:^(BOOL finished) { + [self finishReceivingMessage]; + }]; } #pragma mark - UICollectionView DataSource