Delete the completion-based deleteSelectedForProcessing method.

This commit is contained in:
Brent Simmons 2024-03-24 23:44:25 -07:00
parent 64b3fcc2ba
commit 0fb5312139
5 changed files with 18 additions and 25 deletions

View File

@ -700,9 +700,11 @@ private extension CloudKitAccountDelegate {
}
func sendNewArticlesToTheCloud(_ account: Account, _ feed: Feed) {
account.fetchArticlesAsync(.feed(feed)) { result in
switch result {
case .success(let articles):
Task { @MainActor in
do {
let articles = try await account.articles(for: .feed(feed))
self.storeArticleChanges(new: articles, updated: Set<Article>(), deleted: Set<Article>()) {
self.refreshProgress.completeTask()
self.sendArticleStatus(for: account, showProgress: true) { result in
@ -714,12 +716,13 @@ private extension CloudKitAccountDelegate {
}
}
}
case .failure(let error):
} catch {
os_log(.error, log: self.log, "CloudKit Feed send articles error: %@.", error.localizedDescription)
}
}
}
func processAccountError(_ account: Account, _ error: Error) {
if case CloudKitZoneError.userDeletedZone = error {
account.removeFeeds(account.topLevelFeeds)

View File

@ -76,7 +76,8 @@ private extension CloudKitArticlesZoneDelegate {
return
}
database.deleteSelectedForProcessing(Array(deletableArticleIDs)) { _ in
Task { @MainActor in
try? await self.database.deleteSelectedForProcessing(Array(deletableArticleIDs))
self.account?.delete(articleIDs: deletableArticleIDs) { _ in
completion()
}

View File

@ -140,9 +140,9 @@ private extension CloudKitSendStatusOperation {
// but the articles didn't come back in the fetch. We need to clean up those sync records
// and stop processing.
if statusUpdates.isEmpty {
self.database.deleteSelectedForProcessing(articleIDs) { _ in
Task { @MainActor in
try? await self.database.deleteSelectedForProcessing(articleIDs)
done(true)
return
}
} else {
@ -150,7 +150,8 @@ private extension CloudKitSendStatusOperation {
articlesZone.modifyArticles(statusUpdates) { result in
switch result {
case .success:
self.database.deleteSelectedForProcessing(statusUpdates.map({ $0.articleID })) { _ in
Task { @MainActor in
try? await self.database.deleteSelectedForProcessing(statusUpdates.map({ $0.articleID }))
done(false)
}
case .failure(let error):
@ -164,7 +165,7 @@ private extension CloudKitSendStatusOperation {
}
}
}
switch result {
case .success(let articles):
processWithArticles(articles)
@ -174,10 +175,9 @@ private extension CloudKitSendStatusOperation {
completion(true)
}
}
}
}
func processAccountError(_ account: Account, _ error: Error) {
if case CloudKitZoneError.userDeletedZone = error {
account.removeFeeds(account.topLevelFeeds)

View File

@ -71,7 +71,8 @@ private extension FeedlySendArticleStatusesOperation {
assert(Thread.isMainThread)
switch result {
case .success:
database.deleteSelectedForProcessing(Array(ids)) { _ in
Task { @MainActor in
try? await database.deleteSelectedForProcessing(Array(ids))
group.leave()
}
case .failure:

View File

@ -218,18 +218,6 @@ public extension SyncDatabase {
}
}
}
nonisolated func deleteSelectedForProcessing(_ articleIDs: [String], completion: DatabaseCompletionBlock? = nil) {
Task {
do {
try await self.deleteSelectedForProcessing(articleIDs)
completion?(nil)
} catch {
completion?(DatabaseError.suspended)
}
}
}
}
private extension SyncDatabase {