mirror of
https://github.com/Ranchero-Software/NetNewsWire
synced 2025-08-12 06:26:36 +00:00
Fix numerous concurrency warnings in CloudKit code.
This commit is contained in:
@@ -24,9 +24,9 @@ enum CloudKitAccountZoneError: LocalizedError {
|
||||
|
||||
@MainActor final class CloudKitAccountZone: CloudKitZone {
|
||||
|
||||
var zoneID: CKRecordZone.ID
|
||||
|
||||
var log = OSLog(subsystem: Bundle.main.bundleIdentifier!, category: "CloudKit")
|
||||
let zoneID: CKRecordZone.ID
|
||||
|
||||
let log = OSLog(subsystem: Bundle.main.bundleIdentifier!, category: "CloudKit")
|
||||
|
||||
weak var container: CKContainer?
|
||||
weak var database: CKDatabase?
|
||||
@@ -240,7 +240,7 @@ enum CloudKitAccountZoneError: LocalizedError {
|
||||
return try await findOrCreateAccount()
|
||||
|
||||
case .zoneNotFound, .userDeletedZone:
|
||||
try await createZoneRecord()
|
||||
_ = try await createZoneRecord()
|
||||
return try await findOrCreateAccount()
|
||||
|
||||
default:
|
||||
|
||||
@@ -59,7 +59,7 @@ final class CloudKitArticlesZone: CloudKitZone {
|
||||
}
|
||||
}
|
||||
|
||||
init(container: CKContainer) {
|
||||
@MainActor init(container: CKContainer) {
|
||||
self.container = container
|
||||
self.database = container.privateCloudDatabase
|
||||
self.zoneID = CKRecordZone.ID(zoneName: "Articles", ownerName: CKCurrentUserDefaultName)
|
||||
@@ -73,16 +73,16 @@ final class CloudKitArticlesZone: CloudKitZone {
|
||||
completion(.success(()))
|
||||
case .failure(let error):
|
||||
if case CloudKitZoneError.userDeletedZone = error {
|
||||
self.createZoneRecord() { result in
|
||||
switch result {
|
||||
case .success:
|
||||
Task { @MainActor in
|
||||
self.refreshArticles(completion: completion)
|
||||
}
|
||||
case .failure(let error):
|
||||
|
||||
Task { @MainActor in
|
||||
do {
|
||||
_ = try await self.createZoneRecord()
|
||||
self.refreshArticles(completion: completion)
|
||||
} catch {
|
||||
completion(.failure(error))
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
completion(.failure(error))
|
||||
}
|
||||
@@ -174,16 +174,16 @@ private extension CloudKitArticlesZone {
|
||||
|
||||
@MainActor func handleModifyArticlesError(_ error: Error, statusUpdates: [CloudKitArticleStatusUpdate], completion: @escaping ((Result<Void, Error>) -> Void)) {
|
||||
if case CloudKitZoneError.userDeletedZone = error {
|
||||
self.createZoneRecord() { result in
|
||||
switch result {
|
||||
case .success:
|
||||
MainActor.assumeIsolated {
|
||||
self.modifyArticles(statusUpdates, completion: completion)
|
||||
}
|
||||
case .failure(let error):
|
||||
|
||||
Task { @MainActor in
|
||||
do {
|
||||
_ = try await self.createZoneRecord()
|
||||
self.modifyArticles(statusUpdates, completion: completion)
|
||||
} catch {
|
||||
completion(.failure(error))
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
completion(.failure(error))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user