From 7b09c86858ed037f9fec9f76309f14717f729eb5 Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Sun, 13 Oct 2019 19:32:46 -0700 Subject: [PATCH] Use the new article saving function for both Feedly and ReaderAPI. --- ...UpdateAccountFeedsWithItemsOperation.swift | 15 ++++------- .../ReaderAPI/ReaderAPIAccountDelegate.swift | 27 ++----------------- 2 files changed, 7 insertions(+), 35 deletions(-) diff --git a/Frameworks/Account/Feedly/Refresh/FeedlyUpdateAccountFeedsWithItemsOperation.swift b/Frameworks/Account/Feedly/Refresh/FeedlyUpdateAccountFeedsWithItemsOperation.swift index f30322b36..d7fd764d4 100644 --- a/Frameworks/Account/Feedly/Refresh/FeedlyUpdateAccountFeedsWithItemsOperation.swift +++ b/Frameworks/Account/Feedly/Refresh/FeedlyUpdateAccountFeedsWithItemsOperation.swift @@ -23,29 +23,24 @@ final class FeedlyUpdateAccountFeedsWithItemsOperation: FeedlyOperation { } override func main() { + assert(Thread.isMainThread) // Needs to be on main thread because Feed is a main-thread-only model type. guard !isCancelled else { didFinish() return } - let group = DispatchGroup() let allFeeds = organisedItemsProvider.allFeeds // os_log(.debug, log: log, "Begin updating %i feeds in collection \"%@\"", allFeeds.count, organisedItemsProvider.collection.label) - + + var feedIDsAndItems = [String: Set]() for feed in allFeeds { guard let items = organisedItemsProvider.parsedItems(for: feed) else { continue } - group.enter() -// os_log(.debug, log: log, "Updating %i items for feed \"%@\" in collection \"%@\"", items.count, feed.nameForDisplay, organisedItemsProvider.collection.label) - - account.update(feed, parsedItems: items, defaultRead: true) { - group.leave() - } + feedIDsAndItems[feed.feedID] = items } - - group.notify(qos: .userInitiated, queue: .main) { + account.update(feedIDsAndItems: feedIDsAndItems, defaultRead: true) { // os_log(.debug, log: self.log, "Finished updating feeds in collection \"%@\"", self.organisedItemsProvider.collection.label) self.didFinish() } diff --git a/Frameworks/Account/ReaderAPI/ReaderAPIAccountDelegate.swift b/Frameworks/Account/ReaderAPI/ReaderAPIAccountDelegate.swift index 4b895b0ed..abb7757aa 100644 --- a/Frameworks/Account/ReaderAPI/ReaderAPIAccountDelegate.swift +++ b/Frameworks/Account/ReaderAPI/ReaderAPIAccountDelegate.swift @@ -866,32 +866,9 @@ private extension ReaderAPIAccountDelegate { } func processEntries(account: Account, entries: [ReaderAPIEntry]?, completion: @escaping (() -> Void)) { - let parsedItems = mapEntriesToParsedItems(account: account, entries: entries) - let parsedMap = Dictionary(grouping: parsedItems, by: { item in item.feedURL } ) - - let group = DispatchGroup() - - for (feedID, mapItems) in parsedMap { - - group.enter() - - if let feed = account.existingFeed(withFeedID: feedID) { - DispatchQueue.main.async { - account.update(feed, parsedItems: Set(mapItems), defaultRead: true) { - group.leave() - } - } - } else { - group.leave() - } - - } - - group.notify(queue: DispatchQueue.main) { - completion() - } - + let feedIDsAndItems = Dictionary(grouping: parsedItems, by: { item in item.feedURL } ).mapValues { Set($0) } + account.update(feedIDsAndItems: feedIDsAndItems, defaultRead: true, completion: completion) } func mapEntriesToParsedItems(account: Account, entries: [ReaderAPIEntry]?) -> Set {