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
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)))

View File

@ -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))
}

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
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<CKRecord, Error>) -> Void) {
func fetch(externalID: String?, completion: @escaping (Result<CKRecord, Error>) -> 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, Error>) -> Void) {
@MainActor func fetchChangesInZone(completion: @escaping (Result<Void, Error>) -> Void) {
var savedChangeToken = changeToken