Fix build errors.

This commit is contained in:
Brent Simmons 2024-04-14 17:32:46 -07:00
parent bdd9075b99
commit ec75dd7367
3 changed files with 21 additions and 11 deletions

View File

@ -279,7 +279,9 @@ enum CloudKitAccountZoneError: LocalizedError {
self.createZoneRecord() { result in self.createZoneRecord() { result in
switch result { switch result {
case .success: case .success:
MainActor.assumeIsolated {
self.findOrCreateAccount(completion: completion) self.findOrCreateAccount(completion: completion)
}
case .failure(let error): case .failure(let error):
DispatchQueue.main.async { DispatchQueue.main.async {
completion(.failure(CloudKitError(error))) completion(.failure(CloudKitError(error)))

View File

@ -76,7 +76,9 @@ final class CloudKitArticlesZone: CloudKitZone {
self.createZoneRecord() { result in self.createZoneRecord() { result in
switch result { switch result {
case .success: case .success:
Task { @MainActor in
self.refreshArticles(completion: completion) self.refreshArticles(completion: completion)
}
case .failure(let error): case .failure(let error):
completion(.failure(error)) completion(.failure(error))
} }
@ -140,7 +142,7 @@ final class CloudKitArticlesZone: CloudKitZone {
} }
} }
compressionQueue.async { compressionQueue.async { [newRecords] in
let compressedModifyRecords = self.compressArticleRecords(modifyRecords) let compressedModifyRecords = self.compressArticleRecords(modifyRecords)
self.modify(recordsToSave: compressedModifyRecords, recordIDsToDelete: deleteRecordIDs) { result in self.modify(recordsToSave: compressedModifyRecords, recordIDsToDelete: deleteRecordIDs) { result in
switch result { switch result {
@ -155,10 +157,12 @@ final class CloudKitArticlesZone: CloudKitZone {
} }
} }
case .failure(let error): case .failure(let error):
Task { @MainActor in
self.handleModifyArticlesError(error, statusUpdates: statusUpdates, completion: completion) self.handleModifyArticlesError(error, statusUpdates: statusUpdates, completion: completion)
} }
} }
} }
}
} }
@ -171,7 +175,9 @@ private extension CloudKitArticlesZone {
self.createZoneRecord() { result in self.createZoneRecord() { result in
switch result { switch result {
case .success: case .success:
MainActor.assumeIsolated {
self.modifyArticles(statusUpdates, completion: completion) self.modifyArticles(statusUpdates, completion: completion)
}
case .failure(let error): case .failure(let error):
completion(.failure(error)) completion(.failure(error))
} }

View File

@ -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 let delayTime = DispatchTime.now() + after
DispatchQueue.main.asyncAfter(deadline: delayTime, execute: { DispatchQueue.main.asyncAfter(deadline: delayTime, execute: {
Task { @MainActor in
block() block()
}
}) })
} }
@ -268,7 +270,7 @@ public extension CloudKitZone {
/// Subscribes to zone changes /// Subscribes to zone changes
func subscribeToZoneChanges() { func subscribeToZoneChanges() {
let subscription = CKRecordZoneSubscription(zoneID: zoneID) let subscription = CKRecordZoneSubscription(zoneID: zoneID, subscriptionID: zoneID.zoneName)
let info = CKSubscription.NotificationInfo() let info = CKSubscription.NotificationInfo()
info.shouldSendContentAvailable = true info.shouldSendContentAvailable = true
@ -487,7 +489,7 @@ public extension CloudKitZone {
} }
/// Fetch a CKRecord by using its externalID /// Fetch a CKRecord by using its externalID
func fetch(externalID: String?, completion: @escaping @Sendable (Result<CKRecord, Error>) -> Void) { func fetch(externalID: String?, completion: @escaping (Result<CKRecord, Error>) -> Void) {
guard let externalID = externalID else { guard let externalID = externalID else {
completion(.failure(CloudKitZoneError.corruptAccount)) completion(.failure(CloudKitZoneError.corruptAccount))
return return
@ -1111,7 +1113,7 @@ public extension CloudKitZone {
} }
/// Fetch all the changes in the CKZone since the last time we checked /// Fetch all the changes in the CKZone since the last time we checked
@MainActor func fetchChangesInZone(completion: @escaping @Sendable (Result<Void, Error>) -> Void) { @MainActor func fetchChangesInZone(completion: @escaping (Result<Void, Error>) -> Void) {
var savedChangeToken = changeToken var savedChangeToken = changeToken