Move CloudKit record creation to a high priority background queue so that it isn't blocking main

This commit is contained in:
Maurice Parker 2020-07-27 16:08:09 -05:00
parent ac9ba39ea2
commit 8e890ec177

View File

@ -114,23 +114,25 @@ final class CloudKitArticlesZone: CloudKitZone {
var newRecords = [CKRecord]() var newRecords = [CKRecord]()
var deleteRecordIDs = [CKRecord.ID]() var deleteRecordIDs = [CKRecord.ID]()
DispatchQueue.global(qos: .userInitiated).async {
for statusUpdate in statusUpdates { for statusUpdate in statusUpdates {
switch statusUpdate.record { switch statusUpdate.record {
case .all: case .all:
modifyRecords.append(makeStatusRecord(statusUpdate)) modifyRecords.append(self.makeStatusRecord(statusUpdate))
modifyRecords.append(makeArticleRecord(statusUpdate.article!)) modifyRecords.append(self.makeArticleRecord(statusUpdate.article!))
case .new: case .new:
newRecords.append(makeStatusRecord(statusUpdate)) newRecords.append(self.makeStatusRecord(statusUpdate))
newRecords.append(makeArticleRecord(statusUpdate.article!)) newRecords.append(self.makeArticleRecord(statusUpdate.article!))
case .delete: case .delete:
deleteRecordIDs.append(CKRecord.ID(recordName: statusID(statusUpdate.articleID), zoneID: Self.zoneID)) deleteRecordIDs.append(CKRecord.ID(recordName: self.statusID(statusUpdate.articleID), zoneID: Self.zoneID))
case .statusOnly: case .statusOnly:
modifyRecords.append(makeStatusRecord(statusUpdate)) modifyRecords.append(self.makeStatusRecord(statusUpdate))
deleteRecordIDs.append(CKRecord.ID(recordName: articleID(statusUpdate.articleID), zoneID: Self.zoneID)) deleteRecordIDs.append(CKRecord.ID(recordName: self.articleID(statusUpdate.articleID), zoneID: Self.zoneID))
} }
} }
modify(recordsToSave: modifyRecords, recordIDsToDelete: deleteRecordIDs) { result in self.modify(recordsToSave: modifyRecords, recordIDsToDelete: deleteRecordIDs) { result in
switch result { switch result {
case .success: case .success:
self.saveIfNew(newRecords) { result in self.saveIfNew(newRecords) { result in
@ -146,6 +148,7 @@ final class CloudKitArticlesZone: CloudKitZone {
} }
} }
} }
}
} }