Ensure that ordered item list keys are unique

This commit is contained in:
Ali
2021-06-19 13:38:39 +04:00
parent 1944d8214f
commit 719a749322
2 changed files with 46 additions and 4 deletions

View File

@@ -27,8 +27,20 @@ private func managedRecentMedia(postbox: Postbox, network: Network, collectionId
itemIds.reverse()
}
return fetch(forceFetch ? 0 : hashForIds(itemIds))
|> mapToSignal { items in
if let items = items {
|> mapToSignal { sourceItems in
var items: [OrderedItemListEntry] = []
if let sourceItems = sourceItems {
var existingIds = Set<MediaId>()
for item in sourceItems {
guard let id = (item.contents as? RecentMediaItem)?.media.id else {
continue
}
if !existingIds.contains(id) {
existingIds.insert(id)
items.append(item)
}
}
return postbox.transaction { transaction -> Void in
transaction.replaceOrderedItemListItems(collectionId: collectionId, items: items)
}