Use FeedlyUtilities in FeedlyAccountDelegate.

This commit is contained in:
Brent Simmons 2024-05-17 22:39:51 -07:00
parent d024e6049d
commit a579126e92
2 changed files with 6 additions and 34 deletions

View File

@ -409,7 +409,7 @@ final class FeedlyAccountDelegate: AccountDelegate {
func updateAccountFeeds(parsedItems: Set<ParsedItem>) async throws { func updateAccountFeeds(parsedItems: Set<ParsedItem>) async throws {
let feedIDsAndItems = parsedItemsKeyedByFeedURL(parsedItems) let feedIDsAndItems = FeedlyUtilities.parsedItemsKeyedByFeedURL(parsedItems)
try await updateAccountFeedsWithItems(feedIDsAndItems: feedIDsAndItems) try await updateAccountFeedsWithItems(feedIDsAndItems: feedIDsAndItems)
} }
@ -451,26 +451,6 @@ final class FeedlyAccountDelegate: AccountDelegate {
return feedsAndFolders return feedsAndFolders
} }
func parsedItemsKeyedByFeedURL(_ parsedItems: Set<ParsedItem>) -> [String: Set<ParsedItem>] {
var d = [String: Set<ParsedItem>]()
for parsedItem in parsedItems {
let key = parsedItem.feedURL
let value: Set<ParsedItem> = {
if var items = d[key] {
items.insert(parsedItem)
return items
} else {
return [parsedItem]
}
}()
d[key] = value
}
return d
}
func downloadArticles(missingArticleIDs: Set<String>?, updatedArticleIDs: Set<String>?) async throws { func downloadArticles(missingArticleIDs: Set<String>?, updatedArticleIDs: Set<String>?) async throws {
let allArticleIDs: Set<String> = { let allArticleIDs: Set<String> = {

View File

@ -8,25 +8,17 @@
import Foundation import Foundation
import Parser import Parser
final class FeedlyUtilities { public final class FeedlyUtilities {
static func parsedItemsKeyedByFeedURL(_ parsedItems: Set<ParsedItem>) -> [String: Set<ParsedItem>] { public static func parsedItemsKeyedByFeedURL(_ parsedItems: Set<ParsedItem>) -> [String: Set<ParsedItem>] {
var d = [String: Set<ParsedItem>]() var d = [String: Set<ParsedItem>]()
for parsedItem in parsedItems { for parsedItem in parsedItems {
let key = parsedItem.feedURL let key = parsedItem.feedURL
var parsedItems = d[key] ?? Set<ParsedItem>()
let value: Set<ParsedItem> = { parsedItems.insert(parsedItem)
if var items = d[key] { d[key] = parsedItems
items.insert(parsedItem)
return items
} else {
return [parsedItem]
}
}()
d[key] = value
} }
return d return d