diff --git a/Signal/src/ViewControllers/HomeView/Chat List/CLVLoader.swift b/Signal/src/ViewControllers/HomeView/Chat List/CLVLoader.swift index 2ec3aab5fd..fc4de19693 100644 --- a/Signal/src/ViewControllers/HomeView/Chat List/CLVLoader.swift +++ b/Signal/src/ViewControllers/HomeView/Chat List/CLVLoader.swift @@ -88,19 +88,22 @@ public class CLVLoader { ) } - var pinnedThreadUniqueIdsForRender = [String]() + var pinnedThreadUniqueIdsToRender = Set() var unpinnedThreadUniqueIdsForRender = [String]() for threadUniqueId in visibleThreadUniqueIds { if !isViewingArchive && pinnedThreadUniqueIds.contains(threadUniqueId) { - pinnedThreadUniqueIdsForRender.append(threadUniqueId) + pinnedThreadUniqueIdsToRender.insert(threadUniqueId) } else { unpinnedThreadUniqueIdsForRender.append(threadUniqueId) } } + // Preserve the order from pinnedThreadUniqueIds + let orderedPinnedThreadUniqueIdsForRender = pinnedThreadUniqueIds.filter(pinnedThreadUniqueIdsToRender.contains(_:)) + return CLVRenderState( viewInfo: viewInfo, - pinnedThreadUniqueIds: pinnedThreadUniqueIdsForRender, + pinnedThreadUniqueIds: orderedPinnedThreadUniqueIdsForRender, unpinnedThreadUniqueIds: unpinnedThreadUniqueIdsForRender ) }