Fix crashing bug that can happen if a CloudKit record gets into an invalid state.

This commit is contained in:
Maurice Parker 2020-12-13 12:01:55 -06:00
parent 69acfc5aa6
commit bcd4d4e076
2 changed files with 11 additions and 1 deletions

View File

@ -117,7 +117,7 @@ private extension CloudKitSendStatusOperation {
articlesZone.modifyArticles(statusUpdates) { result in
switch result {
case .success:
self.database.deleteSelectedForProcessing(statusUpdates.map({ $0.articleID })) { _ in
self.database.deleteSelectedForProcessing(articleIDs) { _ in
// Don't clear the last one since we might have had additional ticks added
if self.showProgress && self.refreshProgress?.numberRemaining ?? 0 > 1 {
self.refreshProgress?.completeTask()

View File

@ -114,6 +114,11 @@ struct SyncStatusTable: DatabaseTable {
}
func resetSelectedForProcessing(_ articleIDs: [String], completion: DatabaseCompletionBlock? = nil) {
guard !articleIDs.isEmpty else {
callCompletion(completion, nil)
return
}
queue.runInTransaction { databaseResult in
func makeDatabaseCall(_ database: FMDatabase) {
@ -134,6 +139,11 @@ struct SyncStatusTable: DatabaseTable {
}
func deleteSelectedForProcessing(_ articleIDs: [String], completion: DatabaseCompletionBlock? = nil) {
guard !articleIDs.isEmpty else {
callCompletion(completion, nil)
return
}
queue.runInTransaction { databaseResult in
func makeDatabaseCall(_ database: FMDatabase) {