From ec75dd736758bfad96f35e3f8556a82697671e41 Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Sun, 14 Apr 2024 17:32:46 -0700 Subject: [PATCH] Fix build errors. --- .../Account/CloudKit/CloudKitAccountZone.swift | 4 +++- .../Account/CloudKit/CloudKitArticlesZone.swift | 14 ++++++++++---- .../Sources/CloudKitExtras/CloudKitZone.swift | 14 ++++++++------ 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/Account/Sources/Account/CloudKit/CloudKitAccountZone.swift b/Account/Sources/Account/CloudKit/CloudKitAccountZone.swift index 926ccb710..7c4d8fc31 100644 --- a/Account/Sources/Account/CloudKit/CloudKitAccountZone.swift +++ b/Account/Sources/Account/CloudKit/CloudKitAccountZone.swift @@ -279,7 +279,9 @@ enum CloudKitAccountZoneError: LocalizedError { self.createZoneRecord() { result in switch result { case .success: - self.findOrCreateAccount(completion: completion) + MainActor.assumeIsolated { + self.findOrCreateAccount(completion: completion) + } case .failure(let error): DispatchQueue.main.async { completion(.failure(CloudKitError(error))) diff --git a/Account/Sources/Account/CloudKit/CloudKitArticlesZone.swift b/Account/Sources/Account/CloudKit/CloudKitArticlesZone.swift index 5aaeed69b..6a7808e33 100644 --- a/Account/Sources/Account/CloudKit/CloudKitArticlesZone.swift +++ b/Account/Sources/Account/CloudKit/CloudKitArticlesZone.swift @@ -76,7 +76,9 @@ final class CloudKitArticlesZone: CloudKitZone { self.createZoneRecord() { result in switch result { case .success: - self.refreshArticles(completion: completion) + Task { @MainActor in + self.refreshArticles(completion: completion) + } case .failure(let error): completion(.failure(error)) } @@ -140,7 +142,7 @@ final class CloudKitArticlesZone: CloudKitZone { } } - compressionQueue.async { + compressionQueue.async { [newRecords] in let compressedModifyRecords = self.compressArticleRecords(modifyRecords) self.modify(recordsToSave: compressedModifyRecords, recordIDsToDelete: deleteRecordIDs) { result in switch result { @@ -155,7 +157,9 @@ final class CloudKitArticlesZone: CloudKitZone { } } case .failure(let error): - self.handleModifyArticlesError(error, statusUpdates: statusUpdates, completion: completion) + Task { @MainActor in + self.handleModifyArticlesError(error, statusUpdates: statusUpdates, completion: completion) + } } } } @@ -171,7 +175,9 @@ private extension CloudKitArticlesZone { self.createZoneRecord() { result in switch result { case .success: - self.modifyArticles(statusUpdates, completion: completion) + MainActor.assumeIsolated { + self.modifyArticles(statusUpdates, completion: completion) + } case .failure(let error): completion(.failure(error)) } diff --git a/CloudKitExtras/Sources/CloudKitExtras/CloudKitZone.swift b/CloudKitExtras/Sources/CloudKitExtras/CloudKitZone.swift index 5abedae2d..f486b66ff 100644 --- a/CloudKitExtras/Sources/CloudKitExtras/CloudKitZone.swift +++ b/CloudKitExtras/Sources/CloudKitExtras/CloudKitZone.swift @@ -121,10 +121,12 @@ public extension CloudKitZone { } } - func retryIfPossible(after: Double, block: @escaping @Sendable () -> ()) { + func retryIfPossible(after: Double, block: @escaping @MainActor () -> ()) { let delayTime = DispatchTime.now() + after DispatchQueue.main.asyncAfter(deadline: delayTime, execute: { - block() + Task { @MainActor in + block() + } }) } @@ -268,8 +270,8 @@ public extension CloudKitZone { /// Subscribes to zone changes func subscribeToZoneChanges() { - let subscription = CKRecordZoneSubscription(zoneID: zoneID) - + let subscription = CKRecordZoneSubscription(zoneID: zoneID, subscriptionID: zoneID.zoneName) + let info = CKSubscription.NotificationInfo() info.shouldSendContentAvailable = true subscription.notificationInfo = info @@ -487,7 +489,7 @@ public extension CloudKitZone { } /// Fetch a CKRecord by using its externalID - func fetch(externalID: String?, completion: @escaping @Sendable (Result) -> Void) { + func fetch(externalID: String?, completion: @escaping (Result) -> Void) { guard let externalID = externalID else { completion(.failure(CloudKitZoneError.corruptAccount)) return @@ -1111,7 +1113,7 @@ public extension CloudKitZone { } /// Fetch all the changes in the CKZone since the last time we checked - @MainActor func fetchChangesInZone(completion: @escaping @Sendable (Result) -> Void) { + @MainActor func fetchChangesInZone(completion: @escaping (Result) -> Void) { var savedChangeToken = changeToken