From 7fe25dd1ec37b85fbdea4dbbb943cdb1f575170e Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Sun, 25 Oct 2020 16:40:06 -0500 Subject: [PATCH] Make folders work for the old reader. --- .../ReaderAPI/ReaderAPIAccountDelegate.swift | 27 +++++++++---------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/Account/Sources/Account/ReaderAPI/ReaderAPIAccountDelegate.swift b/Account/Sources/Account/ReaderAPI/ReaderAPIAccountDelegate.swift index f4d0a650f..dc025ae7f 100644 --- a/Account/Sources/Account/ReaderAPI/ReaderAPIAccountDelegate.swift +++ b/Account/Sources/Account/ReaderAPI/ReaderAPIAccountDelegate.swift @@ -633,7 +633,7 @@ private extension ReaderAPIAccountDelegate { } func deriveTagNames(_ tags: [ReaderAPITag]) -> [String] { - return tags.filter { $0.type == "folder" }.map { $0.tagID.replacingOccurrences(of: "user/-/label/", with: "") } + return tags.filter { $0.tagID.hasPrefix("user/-/label/") }.map { $0.tagID.replacingOccurrences(of: "user/-/label/", with: "") } } func refreshFeeds(_ account: Account, completion: @escaping (Result) -> Void) { @@ -719,13 +719,13 @@ private extension ReaderAPIAccountDelegate { return taggedFeeds } + + var taggedFeedIDs = Set() // Sync the folders for (folderName, groupedTaggings) in taggingsDict { - guard let folder = folderDict[folderName] else { return } - - let taggingFeedIDs = groupedTaggings.map { String($0.feedID) } + let taggingFeedIDs = groupedTaggings.map { $0.feedID } // Move any feeds not in the folder to the account for feed in folder.topLevelWebFeeds { @@ -740,28 +740,25 @@ private extension ReaderAPIAccountDelegate { let folderFeedIds = folder.topLevelWebFeeds.map { $0.webFeedID } for subscription in groupedTaggings { - let taggingFeedID = String(subscription.feedID) + let taggingFeedID = subscription.feedID if !folderFeedIds.contains(taggingFeedID) { guard let feed = account.existingWebFeed(withWebFeedID: taggingFeedID) else { continue } saveFolderRelationship(for: feed, withFolderName: folderName, id: String(subscription.feedID)) folder.addWebFeed(feed) + taggedFeedIDs.insert(taggingFeedID) } } } - // I don't know what this is supposed to do. - -// let taggedFeedIDs = Set(subscriptions.map { String($0.feedID) }) -// -// // Remove all feeds from the account container that have a tag -// for feed in account.topLevelWebFeeds { -// if taggedFeedIDs.contains(feed.webFeedID) { -// account.removeWebFeed(feed) -// } -// } + // Remove all feeds from the account container that have a tag + for feed in account.topLevelWebFeeds { + if taggedFeedIDs.contains(feed.webFeedID) { + account.removeWebFeed(feed) + } + } } func nameToFolderDictionary(with folders: Set?) -> [String: Folder] {