mirror of
https://github.com/JohnEstropia/CoreStore.git
synced 2026-03-14 14:21:38 +01:00
add "updatedItemIdentifiers" utility to ListSnapshot
This commit is contained in:
@@ -96,6 +96,11 @@ extension Internals {
|
||||
return self.structure.allItemIDs
|
||||
}
|
||||
|
||||
var updatedItemIdentifiers: Set<NSManagedObjectID> {
|
||||
|
||||
return self.structure.reloadedItems
|
||||
}
|
||||
|
||||
func numberOfItems(inSection identifier: String) -> Int {
|
||||
|
||||
return self.itemIdentifiers(inSection: identifier).count
|
||||
@@ -121,16 +126,6 @@ extension Internals {
|
||||
return self.structure.allSectionIDs.firstIndex(of: identifier)
|
||||
}
|
||||
|
||||
func isReloaded(sectionID: String) -> Bool? {
|
||||
|
||||
return self.structure.isReloaded(sectionID: sectionID)
|
||||
}
|
||||
|
||||
func isReloaded(itemID: NSManagedObjectID) -> Bool? {
|
||||
|
||||
return self.structure.isReloaded(itemID: itemID)
|
||||
}
|
||||
|
||||
mutating func appendItems(_ identifiers: [NSManagedObjectID], toSection sectionIdentifier: String?) {
|
||||
|
||||
self.structure.append(itemIDs: identifiers, to: sectionIdentifier)
|
||||
@@ -282,10 +277,12 @@ extension Internals {
|
||||
// MARK: Internal
|
||||
|
||||
var sections: [Section]
|
||||
private(set) var reloadedItems: Set<NSManagedObjectID>
|
||||
|
||||
init() {
|
||||
|
||||
self.sections = []
|
||||
self.reloadedItems = []
|
||||
}
|
||||
|
||||
init(sections: [NSFetchedResultsSectionInfo], fetchOffset: Int, fetchLimit: Int?) {
|
||||
@@ -327,6 +324,7 @@ extension Internals {
|
||||
)
|
||||
}
|
||||
self.sections = newSections
|
||||
self.reloadedItems = []
|
||||
}
|
||||
|
||||
var allSectionIDs: [String] {
|
||||
@@ -339,24 +337,6 @@ extension Internals {
|
||||
return self.sections.lazy.flatMap({ $0.elements }).map({ $0.differenceIdentifier })
|
||||
}
|
||||
|
||||
func isReloaded(sectionID: String) -> Bool? {
|
||||
|
||||
return self.sections.first(where: { $0.differenceIdentifier == sectionID })?.isReloaded
|
||||
}
|
||||
|
||||
func isReloaded(itemID: NSManagedObjectID) -> Bool? {
|
||||
|
||||
for section in self.sections {
|
||||
|
||||
guard let item = section.elements.first(where: { $0.differenceIdentifier == itemID }) else {
|
||||
|
||||
return nil
|
||||
}
|
||||
return item.isReloaded
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func items(in sectionID: String) -> [NSManagedObjectID] {
|
||||
|
||||
guard let sectionIndex = self.sectionIndex(of: sectionID) else {
|
||||
@@ -488,6 +468,7 @@ extension Internals {
|
||||
mutating func update<S: Sequence>(itemIDs: S) where S.Element == NSManagedObjectID {
|
||||
|
||||
let itemPositionMap = self.itemPositionMap()
|
||||
var newItemIDs: Set<NSManagedObjectID> = []
|
||||
for itemID in itemIDs {
|
||||
|
||||
guard let itemPosition = itemPositionMap[itemID] else {
|
||||
@@ -496,7 +477,9 @@ extension Internals {
|
||||
}
|
||||
self.sections[itemPosition.sectionIndex]
|
||||
.elements[itemPosition.itemRelativeIndex].isReloaded = true
|
||||
newItemIDs.insert(itemID)
|
||||
}
|
||||
self.reloadedItems.formUnion(newItemIDs)
|
||||
}
|
||||
|
||||
mutating func append(sectionIDs: [String]) {
|
||||
|
||||
Reference in New Issue
Block a user