From 807ad99aad81199f83cad430b73eeff6bfc3a854 Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Sat, 20 Jan 2018 16:54:18 -0800 Subject: [PATCH] Add new articles to the timeline when a feed that affects the timeline gets new articles. Fix #166. --- .../Timeline/TimelineViewController.swift | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/Evergreen/MainWindow/Timeline/TimelineViewController.swift b/Evergreen/MainWindow/Timeline/TimelineViewController.swift index 1234c6072..d4b712d90 100644 --- a/Evergreen/MainWindow/Timeline/TimelineViewController.swift +++ b/Evergreen/MainWindow/Timeline/TimelineViewController.swift @@ -642,7 +642,12 @@ private extension TimelineViewController { } let fetchedArticles = fetchUnsortedArticles(for: representedObjects) - let sortedArticles = Array(fetchedArticles).sortedByDate() + updateArticles(with: fetchedArticles) + } + + func updateArticles(with unsortedArticles: Set
) { + + let sortedArticles = Array(unsortedArticles).sortedByDate() if articles != sortedArticles { articles = sortedArticles } @@ -667,20 +672,27 @@ private extension TimelineViewController { func fetchAndMergeArticles() { + guard let representedObjects = representedObjects else { + return + } + let selectedArticleIDs = selectedArticles.articleIDs() + var unsortedArticles = fetchUnsortedArticles(for: representedObjects) + unsortedArticles.formUnion(Set(articles)) + updateArticles(with: unsortedArticles) selectArticles(selectedArticleIDs) } func selectArticles(_ articleIDs: [String]) { -// let indexesToSelect = indexesOf(articleIDs) -// if indexesToSelect.isEmpty { -// tableView.deselectAll(self) -// return -// } -// tableView.selectRowIndexes(indexesToSelect, byExtendingSelection: false) + let indexesToSelect = articles.indexesForArticleIDs(Set(articleIDs)) + if indexesToSelect.isEmpty { + tableView.deselectAll(self) + return + } + tableView.selectRowIndexes(indexesToSelect, byExtendingSelection: false) } func invalidateFetchAndMergeArticlesTimer() {