mirror of
https://github.com/omnivore-app/omnivore.git
synced 2026-03-11 08:54:26 +00:00
delete old labels when a new label list is fetched
This commit is contained in:
parent
10d5796ba1
commit
c5aab2becc
1 changed files with 13 additions and 0 deletions
|
|
@ -110,9 +110,22 @@ extension Sequence where Element == InternalLinkedItemLabel {
|
|||
var result: [NSManagedObjectID]?
|
||||
|
||||
context.performAndWait {
|
||||
// Get currently stored label ids so we can later delete the old ones
|
||||
let labelsFetchRequest: NSFetchRequest<Models.LinkedItemLabel> = LinkedItemLabel.fetchRequest()
|
||||
let existingLabels = (try? labelsFetchRequest.execute()) ?? []
|
||||
|
||||
let validLabelIDs = map(\.id)
|
||||
let invalidLinkedItemLabels = existingLabels.filter { !validLabelIDs.contains($0.unwrappedID) }
|
||||
|
||||
let labels = map { $0.asManagedObject(inContext: context) }
|
||||
|
||||
do {
|
||||
try context.save()
|
||||
// Delete all existing labels that aren't part of the newly updated list
|
||||
// received from the server
|
||||
for linkedItem in invalidLinkedItemLabels {
|
||||
context.delete(linkedItem)
|
||||
}
|
||||
logger.debug("labels saved succesfully")
|
||||
result = labels.map(\.objectID)
|
||||
} catch {
|
||||
|
|
|
|||
Loading…
Reference in a new issue