From 81d82aea78e1c61a2102121ce59aca5ae4e8bee3 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Mon, 27 Apr 2020 01:17:15 -0500 Subject: [PATCH] Requery the database on feed adds in case the feed was previously added. --- .../CloudKit/CloudKitAccountDelegate.swift | 44 +++++++++++-------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/Frameworks/Account/CloudKit/CloudKitAccountDelegate.swift b/Frameworks/Account/CloudKit/CloudKitAccountDelegate.swift index 289af594f..feec1f38e 100644 --- a/Frameworks/Account/CloudKit/CloudKitAccountDelegate.swift +++ b/Frameworks/Account/CloudKit/CloudKitAccountDelegate.swift @@ -722,19 +722,22 @@ private extension CloudKitAccountDelegate { account.update(urlString, with: parsedItems) { result in switch result { - case .success(let articleChanges): - - let newArticles = articleChanges.newArticles ?? Set
() - let updatedArticles = articleChanges.updatedArticles ?? Set
() - let deletedArticles = articleChanges.deletedArticles ?? Set
() + case .success: - self.processRecords(new: newArticles, updated: updatedArticles, deleted: deletedArticles) { - self.articlesZone.fetchChangesInZone() { _ in - self.refreshProgress.clear() - completion(.success(feed)) + account.fetchArticlesAsync(.webFeed(feed)) { result in + switch result { + case .success(let articles): + self.processRecords(new: articles, updated: Set
(), deleted: Set
()) { + self.articlesZone.fetchChangesInZone() { _ in + self.refreshProgress.clear() + completion(.success(feed)) + } + } + case .failure(let error): + completion(.failure(error)) } } - + case .failure(let error): self.refreshProgress.clear() completion(.failure(error)) @@ -793,7 +796,7 @@ private extension CloudKitAccountDelegate { if let parsedFeed = parsedFeed { account.update(feed, with: parsedFeed) { result in switch result { - case .success(let articleChanges): + case .success: BatchUpdate.shared.end() self.accountZone.createWebFeed(url: bestFeedSpecifier.urlString, name: parsedFeed.title, editedName: editedName, container: container) { result in @@ -804,14 +807,17 @@ private extension CloudKitAccountDelegate { feed.externalID = externalID - let newArticles = articleChanges.newArticles ?? Set
() - let updatedArticles = articleChanges.updatedArticles ?? Set
() - let deletedArticles = articleChanges.deletedArticles ?? Set
() - - self.processRecords(new: newArticles, updated: updatedArticles, deleted: deletedArticles) { - self.articlesZone.fetchChangesInZone() { _ in - self.refreshProgress.clear() - completion(.success(feed)) + account.fetchArticlesAsync(.webFeed(feed)) { result in + switch result { + case .success(let articles): + self.processRecords(new: articles, updated: Set
(), deleted: Set
()) { + self.articlesZone.fetchChangesInZone() { _ in + self.refreshProgress.clear() + completion(.success(feed)) + } + } + case .failure(let error): + completion(.failure(error)) } }