From aa5e6b456e1681a51bed39c66ef942fdde3be8c6 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Mon, 5 Nov 2018 08:58:22 -0500 Subject: [PATCH] Preserve ordering in incremental diffs. --- .../ConversationView/ConversationViewModel.m | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewModel.m b/Signal/src/ViewControllers/ConversationView/ConversationViewModel.m index a557e7805..d5a46e05c 100644 --- a/Signal/src/ViewControllers/ConversationView/ConversationViewModel.m +++ b/Signal/src/ViewControllers/ConversationView/ConversationViewModel.m @@ -654,13 +654,12 @@ static const int kYapDatabaseRangeMinLength = 0; NSSet *newItemIdSet = [NSSet setWithArray:newItemIdList]; // We use sets and dictionaries here to ensure perf. - NSMutableSet *deletedItemIdSet = [oldItemIdSet mutableCopy]; + NSMutableOrderedSet *deletedItemIdSet = [NSMutableOrderedSet orderedSetWithArray:oldItemIdList]; [deletedItemIdSet minusSet:newItemIdSet]; - NSMutableSet *insertedItemIdSet = [newItemIdSet mutableCopy]; + NSMutableOrderedSet *insertedItemIdSet = [NSMutableOrderedSet orderedSetWithArray:newItemIdList]; [insertedItemIdSet minusSet:oldItemIdSet]; - NSArray *deletedItemIdList = [deletedItemIdSet.allObjects sortedArrayUsingSelector:@selector(compare:)]; - NSArray *insertedItemIdList = - [insertedItemIdSet.allObjects sortedArrayUsingSelector:@selector(compare:)]; + NSArray *deletedItemIdList = [deletedItemIdSet.array copy]; + NSArray *insertedItemIdList = [insertedItemIdSet.array copy]; // Try to generate a series of "update items" that safely transform // the "old item list" into the "new item list".