Continue deleting completion-based functions in SyncDatabase.
This commit is contained in:
parent
4385b2d6b7
commit
951349ffc5
@ -38,20 +38,21 @@ class CloudKitArticlesZoneDelegate: CloudKitZoneDelegate {
|
||||
switch result {
|
||||
case .success(let pendingReadStatusArticleIDs):
|
||||
|
||||
self.database.selectPendingStarredStatusArticleIDs() { result in
|
||||
switch result {
|
||||
case .success(let pendingStarredStatusArticleIDs):
|
||||
Task { @MainActor in
|
||||
|
||||
do {
|
||||
|
||||
let pendingStarredStatusArticleIDs = (try await self.database.selectPendingStarredStatusArticleIDs()) ?? Set<String>()
|
||||
self.delete(recordKeys: deleted, pendingStarredStatusArticleIDs: pendingStarredStatusArticleIDs) {
|
||||
Task { @MainActor in
|
||||
self.update(records: changed,
|
||||
pendingReadStatusArticleIDs: pendingReadStatusArticleIDs,
|
||||
pendingStarredStatusArticleIDs: pendingStarredStatusArticleIDs,
|
||||
completion: completion)
|
||||
pendingReadStatusArticleIDs: pendingReadStatusArticleIDs,
|
||||
pendingStarredStatusArticleIDs: pendingStarredStatusArticleIDs,
|
||||
completion: completion)
|
||||
}
|
||||
}
|
||||
|
||||
case .failure(let error):
|
||||
} catch {
|
||||
os_log(.error, log: self.log, "Error occurred getting pending starred records: %@", error.localizedDescription)
|
||||
completion(.failure(CloudKitZoneError.unknown))
|
||||
}
|
||||
@ -206,7 +207,7 @@ private extension CloudKitArticlesZoneDelegate {
|
||||
}
|
||||
|
||||
guard let uniqueID = articleRecord[CloudKitArticlesZone.CloudKitArticle.Fields.uniqueID] as? String,
|
||||
let feedURL = articleRecord[CloudKitArticlesZone.CloudKitArticle.Fields.feedURL] as? String else {
|
||||
let feedURL = articleRecord[CloudKitArticlesZone.CloudKitArticle.Fields.feedURL] as? String else {
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -244,5 +245,4 @@ private extension CloudKitArticlesZoneDelegate {
|
||||
|
||||
return parsedItem
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1360,9 +1360,11 @@ private extension FeedbinAccountDelegate {
|
||||
return
|
||||
}
|
||||
|
||||
database.selectPendingStarredStatusArticleIDs() { result in
|
||||
Task { @MainActor in
|
||||
|
||||
do {
|
||||
let pendingArticleIDs = (try await self.database.selectPendingStarredStatusArticleIDs()) ?? Set<String>()
|
||||
|
||||
MainActor.assumeIsolated {
|
||||
@MainActor func process(_ pendingArticleIDs: Set<String>) {
|
||||
|
||||
let feedbinStarredArticleIDs = Set(articleIDs.map { String($0) } )
|
||||
@ -1396,18 +1398,14 @@ private extension FeedbinAccountDelegate {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
switch result {
|
||||
case .success(let pendingArticleIDs):
|
||||
process(pendingArticleIDs)
|
||||
case .failure(let error):
|
||||
os_log(.error, log: self.log, "Sync Article Starred Status failed: %@.", error.localizedDescription)
|
||||
}
|
||||
process(pendingArticleIDs)
|
||||
|
||||
} catch {
|
||||
os_log(.error, log: self.log, "Sync Article Starred Status failed: %@.", error.localizedDescription)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func deleteTagging(for account: Account, with feed: Feed, from container: Container?, completion: @escaping (Result<Void, Error>) -> Void) {
|
||||
|
@ -77,17 +77,15 @@ final class FeedlyIngestStarredArticleIdsOperation: FeedlyOperation {
|
||||
return
|
||||
}
|
||||
|
||||
database.selectPendingStarredStatusArticleIDs { result in
|
||||
MainActor.assumeIsolated {
|
||||
switch result {
|
||||
case .success(let pendingArticleIds):
|
||||
self.remoteEntryIds.subtract(pendingArticleIds)
|
||||
Task { @MainActor in
|
||||
|
||||
self.updateStarredStatuses()
|
||||
|
||||
case .failure(let error):
|
||||
self.didFinish(with: error)
|
||||
do {
|
||||
if let pendingArticleIDs = try await self.database.selectPendingStarredStatusArticleIDs() {
|
||||
self.remoteEntryIds.subtract(pendingArticleIDs)
|
||||
}
|
||||
self.updateStarredStatuses()
|
||||
} catch {
|
||||
self.didFinish(with: error)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -78,17 +78,15 @@ final class FeedlyIngestUnreadArticleIdsOperation: FeedlyOperation {
|
||||
return
|
||||
}
|
||||
|
||||
database.selectPendingReadStatusArticleIDs { result in
|
||||
MainActor.assumeIsolated {
|
||||
switch result {
|
||||
case .success(let pendingArticleIds):
|
||||
self.remoteEntryIds.subtract(pendingArticleIds)
|
||||
Task { @MainActor in
|
||||
|
||||
self.updateUnreadStatuses()
|
||||
|
||||
case .failure(let error):
|
||||
self.didFinish(with: error)
|
||||
do {
|
||||
if let pendingArticleIDs = try await self.database.selectPendingReadStatusArticleIDs() {
|
||||
self.remoteEntryIds.subtract(pendingArticleIDs)
|
||||
}
|
||||
self.updateUnreadStatuses()
|
||||
} catch {
|
||||
self.didFinish(with: error)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -381,8 +381,11 @@ extension NewsBlurAccountDelegate {
|
||||
return
|
||||
}
|
||||
|
||||
database.selectPendingStarredStatusArticleIDs() { result in
|
||||
MainActor.assumeIsolated {
|
||||
Task { @MainActor in
|
||||
|
||||
do {
|
||||
let pendingArticleIDs = (try await database.selectPendingStarredStatusArticleIDs()) ?? Set<String>()
|
||||
|
||||
@MainActor func process(_ pendingStoryHashes: Set<String>) {
|
||||
|
||||
let newsBlurStarredStoryHashes = Set(hashes.map { $0.hash } )
|
||||
@ -417,12 +420,10 @@ extension NewsBlurAccountDelegate {
|
||||
}
|
||||
}
|
||||
|
||||
switch result {
|
||||
case .success(let pendingArticleIDs):
|
||||
process(pendingArticleIDs)
|
||||
case .failure(let error):
|
||||
os_log(.error, log: self.log, "Sync Story Starred Status failed: %@.", error.localizedDescription)
|
||||
}
|
||||
process(pendingArticleIDs)
|
||||
|
||||
} catch {
|
||||
os_log(.error, log: self.log, "Sync Story Starred Status failed: %@.", error.localizedDescription)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1161,9 +1161,12 @@ private extension ReaderAPIAccountDelegate {
|
||||
return
|
||||
}
|
||||
|
||||
database.selectPendingStarredStatusArticleIDs() { result in
|
||||
Task { @MainActor in
|
||||
|
||||
do {
|
||||
|
||||
let pendingArticleIDs = (try await self.database.selectPendingStarredStatusArticleIDs()) ?? Set<String>()
|
||||
|
||||
MainActor.assumeIsolated {
|
||||
@MainActor func process(_ pendingArticleIDs: Set<String>) {
|
||||
let updatableReaderUnreadArticleIDs = Set(articleIDs).subtracting(pendingArticleIDs)
|
||||
|
||||
@ -1197,15 +1200,11 @@ private extension ReaderAPIAccountDelegate {
|
||||
}
|
||||
}
|
||||
|
||||
switch result {
|
||||
case .success(let pendingArticleIDs):
|
||||
process(pendingArticleIDs)
|
||||
case .failure(let error):
|
||||
os_log(.error, log: self.log, "Sync Article Starred Status failed: %@.", error.localizedDescription)
|
||||
}
|
||||
process(pendingArticleIDs)
|
||||
|
||||
} catch {
|
||||
os_log(.error, log: self.log, "Sync Article Starred Status failed: %@.", error.localizedDescription)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -68,7 +68,7 @@ public actor SyncDatabase {
|
||||
return syncStatusTable.selectPendingStarredStatusArticleIDs(database: database)
|
||||
}
|
||||
|
||||
public func resetAllSelectedForProcessing() throws {
|
||||
public func resetAllSelectedForProcessing() throws {
|
||||
|
||||
guard let database else {
|
||||
throw DatabaseError.suspended
|
||||
@ -179,33 +179,6 @@ public extension SyncDatabase {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
nonisolated func selectPendingStarredStatusArticleIDs(completion: @escaping SyncStatusArticleIDsCompletionBlock) {
|
||||
|
||||
Task { @MainActor in
|
||||
do {
|
||||
if let articleIDs = try await self.selectPendingStarredStatusArticleIDs() {
|
||||
completion(.success(articleIDs))
|
||||
} else {
|
||||
completion(.success(Set<String>()))
|
||||
}
|
||||
} catch {
|
||||
completion(.failure(DatabaseError.suspended))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
nonisolated func resetAllSelectedForProcessing(completion: DatabaseCompletionBlock? = nil) {
|
||||
|
||||
Task { @MainActor in
|
||||
do {
|
||||
try await self.resetAllSelectedForProcessing()
|
||||
completion?(nil)
|
||||
} catch {
|
||||
completion?(DatabaseError.suspended)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private extension SyncDatabase {
|
||||
|
Loading…
x
Reference in New Issue
Block a user