Save the previous feed instead of relying on the currentFeedIndexPath which may have been reset. Issue #2139

This commit is contained in:
Maurice Parker 2020-06-18 16:16:30 -05:00
parent 5356189654
commit b3c0fac5d3

View File

@ -70,11 +70,14 @@ class SceneCoordinator: NSObject, UndoableCommandRunner, UnreadCountProvider {
private var expandedTable = Set<ContainerIdentifier>() private var expandedTable = Set<ContainerIdentifier>()
private var readFilterEnabledTable = [FeedIdentifier: Bool]() private var readFilterEnabledTable = [FeedIdentifier: Bool]()
private var shadowTable = [[Node]]() private var shadowTable = [[Node]]()
private(set) var preSearchTimelineFeed: Feed?
private var lastSearchString = "" private var lastSearchString = ""
private var lastSearchScope: SearchScope? = nil private var lastSearchScope: SearchScope? = nil
private var isSearching: Bool = false private var isSearching: Bool = false
private var savedSearchArticles: ArticleArray? = nil private var savedSearchArticles: ArticleArray? = nil
private var savedSearchArticleIds: Set<String>? = nil private var savedSearchArticleIds: Set<String>? = nil
var isTimelineViewControllerPending = false var isTimelineViewControllerPending = false
var isArticleViewControllerPending = false var isArticleViewControllerPending = false
@ -830,6 +833,7 @@ class SceneCoordinator: NSObject, UndoableCommandRunner, UnreadCountProvider {
func beginSearching() { func beginSearching() {
isSearching = true isSearching = true
preSearchTimelineFeed = timelineFeed
savedSearchArticles = articles savedSearchArticles = articles
savedSearchArticleIds = Set(articles.map { $0.articleID }) savedSearchArticleIds = Set(articles.map { $0.articleID })
setTimelineFeed(nil, animated: true) setTimelineFeed(nil, animated: true)
@ -837,9 +841,9 @@ class SceneCoordinator: NSObject, UndoableCommandRunner, UnreadCountProvider {
} }
func endSearching() { func endSearching() {
if let ip = currentFeedIndexPath, let node = nodeFor(ip), let feed = node.representedObject as? Feed { if let oldTimelineFeed = preSearchTimelineFeed {
emptyTheTimeline() emptyTheTimeline()
timelineFeed = feed timelineFeed = oldTimelineFeed
masterTimelineViewController?.reinitializeArticles(resetScroll: true) masterTimelineViewController?.reinitializeArticles(resetScroll: true)
replaceArticles(with: savedSearchArticles!, animated: true) replaceArticles(with: savedSearchArticles!, animated: true)
} else { } else {
@ -848,6 +852,7 @@ class SceneCoordinator: NSObject, UndoableCommandRunner, UnreadCountProvider {
lastSearchString = "" lastSearchString = ""
lastSearchScope = nil lastSearchScope = nil
preSearchTimelineFeed = nil
savedSearchArticleIds = nil savedSearchArticleIds = nil
savedSearchArticles = nil savedSearchArticles = nil
isSearching = false isSearching = false