From 32a334bb1c8a72976de93e5d5c661db28eceb138 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Thu, 30 Apr 2020 00:05:37 -0500 Subject: [PATCH] Record article deletes that can happen when receiving article statuses from the cloud --- .../CloudKit/CloudKitArticlesZoneDelegate.swift | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/Frameworks/Account/CloudKit/CloudKitArticlesZoneDelegate.swift b/Frameworks/Account/CloudKit/CloudKitArticlesZoneDelegate.swift index 472f4480d..99aa6ad90 100644 --- a/Frameworks/Account/CloudKit/CloudKitArticlesZoneDelegate.swift +++ b/Frameworks/Account/CloudKit/CloudKitArticlesZoneDelegate.swift @@ -118,9 +118,18 @@ private extension CloudKitArticlesZoneDelegate { for (webFeedID, parsedItems) in webFeedIDsAndItems { group.enter() self.account?.update(webFeedID, with: parsedItems) { result in - group.leave() - if case .failure(let databaseError) = result { + switch result { + case .success(let articleChanges): + guard let deletes = articleChanges.deletedArticles, !deletes.isEmpty else { + group.leave() + return + } + let syncStatuses = deletes.map { SyncStatus(articleID: $0.articleID, key: .deleted, flag: true) } + try? self.database.insertStatuses(syncStatuses) + group.leave() + case .failure(let databaseError): os_log(.error, log: self.log, "Error occurred while storing articles: %@", databaseError.localizedDescription) + group.leave() } } }