diff --git a/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift b/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift index 38e531885..e55041833 100644 --- a/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift +++ b/Account/Sources/Account/CloudKit/CloudKitSendStatusOperation.swift @@ -148,31 +148,29 @@ private extension CloudKitSendStatusOperation { Task { @MainActor in articlesZone.modifyArticles(statusUpdates) { result in - switch result { - case .success: - Task { @MainActor in + Task { @MainActor in + switch result { + case .success: try? await self.database.deleteSelectedForProcessing(statusUpdates.map({ $0.articleID })) done(false) - } - case .failure(let error): - self.database.resetSelectedForProcessing(syncStatuses.map({ $0.articleID })) { _ in - MainActor.assumeIsolated { - self.processAccountError(account, error) - os_log(.error, log: self.log, "Send article status modify articles error: %@.", error.localizedDescription) - completion(true) - } + case .failure(let error): + try? await self.database.resetSelectedForProcessing(syncStatuses.map({ $0.articleID })) + self.processAccountError(account, error) + os_log(.error, log: self.log, "Send article status modify articles error: %@.", error.localizedDescription) + completion(true) } } } } } } - + switch result { case .success(let articles): processWithArticles(articles) case .failure(let databaseError): - self.database.resetSelectedForProcessing(syncStatuses.map({ $0.articleID })) { _ in + Task { @MainActor in + try? await self.database.resetSelectedForProcessing(syncStatuses.map({ $0.articleID })) os_log(.error, log: self.log, "Send article status fetch articles error: %@.", databaseError.localizedDescription) completion(true) } diff --git a/Account/Sources/Account/Feedly/Operations/FeedlySendArticleStatusesOperation.swift b/Account/Sources/Account/Feedly/Operations/FeedlySendArticleStatusesOperation.swift index 97016966a..eeaed5759 100644 --- a/Account/Sources/Account/Feedly/Operations/FeedlySendArticleStatusesOperation.swift +++ b/Account/Sources/Account/Feedly/Operations/FeedlySendArticleStatusesOperation.swift @@ -68,15 +68,13 @@ private extension FeedlySendArticleStatusesOperation { let database = self.database group.enter() service.mark(ids, as: pairing.action) { result in - assert(Thread.isMainThread) - switch result { - case .success: - Task { @MainActor in + Task { @MainActor in + switch result { + case .success: try? await database.deleteSelectedForProcessing(Array(ids)) group.leave() - } - case .failure: - database.resetSelectedForProcessing(Array(ids)) { _ in + case .failure: + try? await database.resetSelectedForProcessing(Array(ids)) group.leave() } } diff --git a/SyncDatabase/Sources/SyncDatabase/SyncDatabase.swift b/SyncDatabase/Sources/SyncDatabase/SyncDatabase.swift index 930c97b18..f831b2122 100644 --- a/SyncDatabase/Sources/SyncDatabase/SyncDatabase.swift +++ b/SyncDatabase/Sources/SyncDatabase/SyncDatabase.swift @@ -206,18 +206,6 @@ public extension SyncDatabase { } } } - - nonisolated func resetSelectedForProcessing(_ articleIDs: [String], completion: DatabaseCompletionBlock? = nil) { - - Task { @MainActor in - do { - try await self.resetSelectedForProcessing(articleIDs) - completion?(nil) - } catch { - completion?(DatabaseError.suspended) - } - } - } } private extension SyncDatabase {