Requery the database on feed adds in case the feed was previously added.
This commit is contained in:
parent
b3b1dab522
commit
81d82aea78
@ -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()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user