Requery the database on feed adds in case the feed was previously added.

This commit is contained in:
Maurice Parker 2020-04-27 01:17:15 -05:00
parent b3b1dab522
commit 81d82aea78

View File

@ -722,18 +722,21 @@ private extension CloudKitAccountDelegate {
account.update(urlString, with: parsedItems) { result in account.update(urlString, with: parsedItems) { result in
switch result { switch result {
case .success(let articleChanges): case .success:
let newArticles = articleChanges.newArticles ?? Set<Article>() account.fetchArticlesAsync(.webFeed(feed)) { result in
let updatedArticles = articleChanges.updatedArticles ?? Set<Article>() switch result {
let deletedArticles = articleChanges.deletedArticles ?? Set<Article>() case .success(let articles):
self.processRecords(new: articles, updated: Set<Article>(), deleted: Set<Article>()) {
self.processRecords(new: newArticles, updated: updatedArticles, deleted: deletedArticles) {
self.articlesZone.fetchChangesInZone() { _ in self.articlesZone.fetchChangesInZone() { _ in
self.refreshProgress.clear() self.refreshProgress.clear()
completion(.success(feed)) completion(.success(feed))
} }
} }
case .failure(let error):
completion(.failure(error))
}
}
case .failure(let error): case .failure(let error):
self.refreshProgress.clear() self.refreshProgress.clear()
@ -793,7 +796,7 @@ private extension CloudKitAccountDelegate {
if let parsedFeed = parsedFeed { if let parsedFeed = parsedFeed {
account.update(feed, with: parsedFeed) { result in account.update(feed, with: parsedFeed) { result in
switch result { switch result {
case .success(let articleChanges): case .success:
BatchUpdate.shared.end() BatchUpdate.shared.end()
self.accountZone.createWebFeed(url: bestFeedSpecifier.urlString, name: parsedFeed.title, editedName: editedName, container: container) { result in self.accountZone.createWebFeed(url: bestFeedSpecifier.urlString, name: parsedFeed.title, editedName: editedName, container: container) { result in
@ -804,16 +807,19 @@ private extension CloudKitAccountDelegate {
feed.externalID = externalID feed.externalID = externalID
let newArticles = articleChanges.newArticles ?? Set<Article>() account.fetchArticlesAsync(.webFeed(feed)) { result in
let updatedArticles = articleChanges.updatedArticles ?? Set<Article>() switch result {
let deletedArticles = articleChanges.deletedArticles ?? Set<Article>() case .success(let articles):
self.processRecords(new: articles, updated: Set<Article>(), deleted: Set<Article>()) {
self.processRecords(new: newArticles, updated: updatedArticles, deleted: deletedArticles) {
self.articlesZone.fetchChangesInZone() { _ in self.articlesZone.fetchChangesInZone() { _ in
self.refreshProgress.clear() self.refreshProgress.clear()
completion(.success(feed)) completion(.success(feed))
} }
} }
case .failure(let error):
completion(.failure(error))
}
}
case .failure(let error): case .failure(let error):
self.refreshProgress.clear() self.refreshProgress.clear()