From f9e619d9e74df2eabc7eebac6c742beea10dbd84 Mon Sep 17 00:00:00 2001 From: Shadowfacts Date: Sat, 31 Dec 2022 16:58:20 -0500 Subject: [PATCH] Deduplicate updated timeline positions when handling remote changes --- Tusker/CoreData/MastodonCachePersistentStore.swift | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Tusker/CoreData/MastodonCachePersistentStore.swift b/Tusker/CoreData/MastodonCachePersistentStore.swift index 685c4a57..b61148ed 100644 --- a/Tusker/CoreData/MastodonCachePersistentStore.swift +++ b/Tusker/CoreData/MastodonCachePersistentStore.swift @@ -507,10 +507,11 @@ class MastodonCachePersistentStore: NSPersistentCloudKitContainer { let req = NSPersistentHistoryChangeRequest.fetchHistory(after: self.lastRemoteChangeToken) self.backgroundContext.performAndWait { if let result = try? self.backgroundContext.execute(req) as? NSPersistentHistoryResult, - let transactions = result.result as? [NSPersistentHistoryTransaction] { + let transactions = result.result as? [NSPersistentHistoryTransaction], + !transactions.isEmpty { var changedHashtags = false var changedInstances = false - var changedTimelinePositions: [NSManagedObjectID] = [] + var changedTimelinePositions = Set() var changedAccountPrefs = false outer: for transaction in transactions { for change in transaction.changes ?? [] { @@ -519,7 +520,7 @@ class MastodonCachePersistentStore: NSPersistentCloudKitContainer { } else if change.changedObjectID.entity.name == "SavedInstance" { changedInstances = true } else if change.changedObjectID.entity.name == "TimelinePosition" { - changedTimelinePositions.append(change.changedObjectID) + changedTimelinePositions.insert(change.changedObjectID) } else if change.changedObjectID.entity.name == "AccountPreferences" { changedAccountPrefs = true }