From 27883632d0601e53c577c081b026d8ceb9f6c2d8 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Sat, 31 Aug 2019 20:23:14 -0500 Subject: [PATCH] Fix bug that prevented reading article user activities from being restored --- iOS/AppCoordinator.swift | 22 +++++++++++-------- iOS/MasterFeed/MasterFeedViewController.swift | 3 ++- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/iOS/AppCoordinator.swift b/iOS/AppCoordinator.swift index 07bcb7c8b..1272de8d6 100644 --- a/iOS/AppCoordinator.swift +++ b/iOS/AppCoordinator.swift @@ -663,9 +663,11 @@ class AppCoordinator: NSObject, UndoableCommandRunner, UnreadCountProvider { runCommand(markReadCommand) } - func discloseFeed(_ feed: Feed) { + func discloseFeed(_ feed: Feed, completion: (() -> Void)? = nil) { masterNavigationController.popViewController(animated: true) - masterFeedViewController.discloseFeed(feed) + masterFeedViewController.discloseFeed(feed) { + completion?() + } } func showSettings() { @@ -1119,7 +1121,7 @@ private extension AppCoordinator { let targetSplit = ensureDoubleSplit().children.first as! UISplitViewController targetSplit.showDetailViewController(controller, sender: self) } else if rootSplitViewController.isCollapsed { - rootSplitViewController.showDetailViewController(controller, sender: self) + masterNavigationController.pushViewController(controller, animated: true) } else { if let shimController = rootSplitViewController.viewControllers.last { shimController.replaceChildAndPinView(controller) @@ -1295,15 +1297,17 @@ private extension AppCoordinator { return } - discloseFeed(feedNode.representedObject as! Feed) + discloseFeed(feedNode.representedObject as! Feed) { - guard let articleID = activity.userInfo?[ActivityID.articleID.rawValue] as? String else { return } + guard let articleID = activity.userInfo?[ActivityID.articleID.rawValue] as? String else { return } - for (index, article) in articles.enumerated() { - if article.articleID == articleID { - selectArticle(IndexPath(row: index, section: 0)) - break + for (index, article) in self.articles.enumerated() { + if article.articleID == articleID { + self.selectArticle(IndexPath(row: index, section: 0)) + break + } } + } } diff --git a/iOS/MasterFeed/MasterFeedViewController.swift b/iOS/MasterFeed/MasterFeedViewController.swift index 69d85e054..b9033446e 100644 --- a/iOS/MasterFeed/MasterFeedViewController.swift +++ b/iOS/MasterFeed/MasterFeedViewController.swift @@ -400,7 +400,7 @@ class MasterFeedViewController: UITableViewController, UndoableCommandRunner { reloadAllVisibleCells() } - func discloseFeed(_ feed: Feed) { + func discloseFeed(_ feed: Feed, completion: (() -> Void)? = nil) { guard let node = coordinator.rootNode.descendantNodeRepresentingObject(feed as AnyObject) else { return @@ -424,6 +424,7 @@ class MasterFeedViewController: UITableViewController, UndoableCommandRunner { if let indexPath = self?.coordinator.indexPathFor(node) { self?.tableView.scrollToRow(at: indexPath, at: .middle, animated: true) self?.coordinator.selectFeed(indexPath) + completion?() } }