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