diff --git a/Frameworks/Account/NewsBlur/Internals/NewsBlurAccountDelegate+Internal.swift b/Frameworks/Account/NewsBlur/Internals/NewsBlurAccountDelegate+Internal.swift index 0cadff712..034d59f7e 100644 --- a/Frameworks/Account/NewsBlur/Internals/NewsBlurAccountDelegate+Internal.swift +++ b/Frameworks/Account/NewsBlur/Internals/NewsBlurAccountDelegate+Internal.swift @@ -66,8 +66,9 @@ extension NewsBlurAccountDelegate { }() // Make any folders NewsBlur has, but we don't + // Ignore account-level folder folderNames.forEach { folderName in - if !accountFolderNames.contains(folderName) { + if !accountFolderNames.contains(folderName) && folderName != " " { _ = account.ensureFolder(with: folderName) } } @@ -133,7 +134,7 @@ extension NewsBlurAccountDelegate { // Set up some structures to make syncing easier let relationships = folders.map({ $0.asRelationships }).flatMap { $0 } let folderDict = nameToFolderDictionary(with: account.folders) - let foldersDict = relationships.reduce([String: [NewsBlurFolderRelationship]]()) { (dict, relationship) in + let newsBlurFolderDict = relationships.reduce([String: [NewsBlurFolderRelationship]]()) { (dict, relationship) in var feedInFolders = dict if var feedInFolder = feedInFolders[relationship.folderName] { feedInFolder.append(relationship) @@ -145,14 +146,14 @@ extension NewsBlurAccountDelegate { } // Sync the folders - for (folderName, folderRelationships) in foldersDict { + for (folderName, folderRelationships) in newsBlurFolderDict { guard let folder = folderDict[folderName] else { return } - let folderFeedIDs = folderRelationships.map { String($0.feedID) } + let newsBlurFolderFeedIDs = folderRelationships.map { String($0.feedID) } // Move any feeds not in the folder to the account for feed in folder.topLevelWebFeeds { - if !folderFeedIDs.contains(feed.webFeedID) { + if !newsBlurFolderFeedIDs.contains(feed.webFeedID) { folder.removeWebFeed(feed) clearFolderRelationship(for: feed, withFolderName: folder.name ?? "") account.addWebFeed(feed) @@ -172,16 +173,6 @@ extension NewsBlurAccountDelegate { folder.addWebFeed(feed) } } - - } - - let folderFeedIDs = Set(relationships.map { String($0.feedID) }) - - // Remove all feeds from the account container that have a tag - for feed in account.topLevelWebFeeds { - if folderFeedIDs.contains(feed.webFeedID) { - account.removeWebFeed(feed) - } } } diff --git a/Frameworks/Account/NewsBlur/Models/NewsBlurFeed.swift b/Frameworks/Account/NewsBlur/Models/NewsBlurFeed.swift index ad3fb5497..d4a0500a9 100644 --- a/Frameworks/Account/NewsBlur/Models/NewsBlurFeed.swift +++ b/Frameworks/Account/NewsBlur/Models/NewsBlurFeed.swift @@ -34,7 +34,7 @@ struct NewsBlurAddURLResponse: Decodable { let feed: NewsBlurFeed? } -struct NewsBlurFolderRelationship: Codable { +struct NewsBlurFolderRelationship { let folderName: String let feedID: Int } @@ -71,8 +71,7 @@ extension NewsBlurFeedsResponse { var folders: [Folder] = [] let folderContainer = try container.nestedContainer(keyedBy: NewsBlurGenericCodingKeys.self, forKey: .folders) - // Skip "everything" folder - for key in folderContainer.allKeys where key.stringValue != " " { + for key in folderContainer.allKeys { let subscriptionIds = try folderContainer.decode([Int].self, forKey: key) let folder = Folder(name: key.stringValue, feedIDs: subscriptionIds)