Chunk the new articles in advance of sending them to the zone so that we can count them in the progress bar.
This commit is contained in:
parent
2efa939f25
commit
b168cef88b
|
@ -628,11 +628,8 @@ private extension CloudKitAccountDelegate {
|
|||
|
||||
self.articlesZone.deleteArticles(deletedArticles) { _ in
|
||||
self.refreshProgress.completeTask()
|
||||
self.articlesZone.saveNewArticles(newAndUpdatedArticles) { _ in
|
||||
self.articlesZone.fetchChangesInZone() { _ in
|
||||
self.refreshProgress.completeTask()
|
||||
completion()
|
||||
}
|
||||
self.saveNewArticles(newAndUpdatedArticles) {
|
||||
completion()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -640,6 +637,28 @@ private extension CloudKitAccountDelegate {
|
|||
|
||||
}
|
||||
|
||||
func saveNewArticles(_ articles: Set<Article>, completion: @escaping () -> Void) {
|
||||
let group = DispatchGroup()
|
||||
|
||||
let articleGroups = Array(articles).chunked(into: 300).map { Set($0) }
|
||||
refreshProgress.addToNumberOfTasksAndRemaining(articleGroups.count)
|
||||
|
||||
for articleGroup in articleGroups {
|
||||
group.enter()
|
||||
self.articlesZone.saveNewArticles(articleGroup) { _ in
|
||||
self.refreshProgress.completeTask()
|
||||
group.leave()
|
||||
}
|
||||
}
|
||||
|
||||
group.notify(queue: DispatchQueue.main) {
|
||||
self.articlesZone.fetchChangesInZone() { _ in
|
||||
self.refreshProgress.completeTask()
|
||||
completion()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func createProviderWebFeed(for account: Account, urlComponents: URLComponents, editedName: String?, container: Container, feedProvider: FeedProvider, completion: @escaping (Result<WebFeed, Error>) -> Void) {
|
||||
refreshProgress.addToNumberOfTasksAndRemaining(5)
|
||||
|
||||
|
|
Loading…
Reference in New Issue