Skip to content

Commit a0660b7

Browse files
committed
fix: Ensure correct media attachment sorting
Map the Media lookup results to the original array of media IDs so that the sort order is preserved.
1 parent c4dc6b0 commit a0660b7

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

WordPress/Classes/ViewRelated/Gutenberg/GutenbergMediaPickerHelper.swift

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,22 @@ final class GutenbergMediaPickerHelper: NSObject {
4747

4848
private func mapMediaIdsToMedia(_ mediaIds: [Int]) -> [Media] {
4949
let context = ContextManager.shared.mainContext
50-
let request: NSFetchRequest = Media.fetchRequest()
51-
request.predicate = NSPredicate(format: "mediaID IN %@", mediaIds)
50+
let request = NSFetchRequest<NSManagedObject>(entityName: "Media")
51+
request.predicate = NSPredicate(format: "mediaID IN %@", mediaIds.map { NSNumber(value: $0) })
5252

5353
do {
54-
return try context.fetch(request) as? [Media] ?? []
54+
let fetchedMedia = try context.fetch(request) as? [Media] ?? []
55+
56+
// Create a dictionary for quick lookup
57+
let mediaDict = Dictionary(uniqueKeysWithValues: fetchedMedia.compactMap { media -> (Int, Media)? in
58+
if let mediaID = media.mediaID?.intValue {
59+
return (mediaID, media)
60+
}
61+
return nil
62+
})
63+
64+
// Map the original mediaIds to Media objects, preserving order
65+
return mediaIds.compactMap { mediaDict[$0] }
5566
} catch {
5667
return []
5768
}

0 commit comments

Comments
 (0)