Remove fetchUnreadArticlesAsync method.

This commit is contained in:
Brent Simmons 2024-03-24 22:56:09 -07:00
parent 4990a99ba8
commit aab7ab7a80
4 changed files with 12 additions and 50 deletions

View File

@ -16,7 +16,6 @@ public protocol ArticleFetcher {
@MainActor func fetchArticlesAsync(_ completion: @escaping ArticleSetResultBlock) @MainActor func fetchArticlesAsync(_ completion: @escaping ArticleSetResultBlock)
@MainActor func fetchUnreadArticles() async throws -> Set<Article> @MainActor func fetchUnreadArticles() async throws -> Set<Article>
@MainActor func fetchUnreadArticlesAsync(_ completion: @escaping ArticleSetResultBlock)
} }
extension Feed: ArticleFetcher { extension Feed: ArticleFetcher {
@ -49,22 +48,6 @@ extension Feed: ArticleFetcher {
return try await account.unreadArticles(feed: self) return try await account.unreadArticles(feed: self)
} }
public func fetchUnreadArticlesAsync(_ completion: @escaping ArticleSetResultBlock) {
guard let account = account else {
assertionFailure("Expected feed.account, but got nil.")
completion(.success(Set<Article>()))
return
}
account.fetchArticlesAsync(.feed(self)) { articleSetResult in
switch articleSetResult {
case .success(let articles):
completion(.success(articles.unreadArticles()))
case .failure(let error):
completion(.failure(error))
}
}
}
} }
extension Folder: ArticleFetcher { extension Folder: ArticleFetcher {
@ -89,17 +72,6 @@ extension Folder: ArticleFetcher {
try await articles(unreadOnly: true) try await articles(unreadOnly: true)
} }
public func fetchUnreadArticlesAsync(_ completion: @escaping ArticleSetResultBlock) {
guard let account else {
assertionFailure("Expected folder.account, but got nil.")
completion(.success(Set<Article>()))
return
}
account.fetchArticlesAsync(.folder(self, true), completion)
}
} }
private extension Folder { private extension Folder {

View File

@ -103,11 +103,6 @@ extension SmartFeed: ArticleFetcher {
try await delegate.fetchUnreadArticles() try await delegate.fetchUnreadArticles()
} }
func fetchUnreadArticlesAsync(_ completion: @escaping ArticleSetResultBlock) {
delegate.fetchUnreadArticlesAsync(completion)
}
} }
private extension SmartFeed { private extension SmartFeed {

View File

@ -73,16 +73,11 @@ extension UnreadFeed: ArticleFetcher {
func fetchArticlesAsync(_ completion: @escaping ArticleSetResultBlock) { func fetchArticlesAsync(_ completion: @escaping ArticleSetResultBlock) {
fetchUnreadArticlesAsync(completion) AccountManager.shared.fetchArticlesAsync(fetchType, completion)
} }
func fetchUnreadArticles() async throws -> Set<Article> { func fetchUnreadArticles() async throws -> Set<Article> {
try await AccountManager.shared.fetchArticles(fetchType: fetchType) try await AccountManager.shared.fetchArticles(fetchType: fetchType)
} }
func fetchUnreadArticlesAsync(_ completion: @escaping ArticleSetResultBlock) {
AccountManager.shared.fetchArticlesAsync(fetchType, completion)
}
} }

View File

@ -62,7 +62,7 @@ final class FetchRequestOperation {
var fetchersReturned = 0 var fetchersReturned = 0
var fetchedArticles = Set<Article>() var fetchedArticles = Set<Article>()
func process(_ articles: Set<Article>) { func process(_ articles: Set<Article>?) {
precondition(Thread.isMainThread) precondition(Thread.isMainThread)
guard !self.isCanceled else { guard !self.isCanceled else {
callCompletionIfNeeded() callCompletionIfNeeded()
@ -71,7 +71,10 @@ final class FetchRequestOperation {
assert(!self.isFinished) assert(!self.isFinished)
fetchedArticles.formUnion(articles) if let articles {
fetchedArticles.formUnion(articles)
}
fetchersReturned += 1 fetchersReturned += 1
if fetchersReturned == numberOfFetchers { if fetchersReturned == numberOfFetchers {
self.isFinished = true self.isFinished = true
@ -80,19 +83,16 @@ final class FetchRequestOperation {
} }
} }
for fetcher in fetchers { Task { @MainActor in
if (fetcher as? SidebarItem)?.readFiltered(readFilterEnabledTable: readFilterEnabledTable) ?? true { for fetcher in fetchers {
fetcher.fetchUnreadArticlesAsync { articleSetResult in if (fetcher as? SidebarItem)?.readFiltered(readFilterEnabledTable: readFilterEnabledTable) ?? true {
let articles = (try? articleSetResult.get()) ?? Set<Article>() let articles = try? await fetcher.fetchUnreadArticles()
process(articles) process(articles)
} } else {
} else { let articles = try? await fetcher.fetchArticles()
fetcher.fetchArticlesAsync { articleSetResult in
let articles = (try? articleSetResult.get()) ?? Set<Article>()
process(articles) process(articles)
} }
} }
} }
} }
} }