Merge branch 'master' of https://github.com/brentsimmons/NetNewsWire
This commit is contained in:
commit
9c3217d032
@ -73,7 +73,7 @@ class MasterTimelineViewController: UITableViewController, UndoableCommandRunner
|
|||||||
navigationItem.titleView = titleView
|
navigationItem.titleView = titleView
|
||||||
}
|
}
|
||||||
|
|
||||||
resetUI()
|
resetUI(resetScroll: true)
|
||||||
applyChanges(animated: false)
|
applyChanges(animated: false)
|
||||||
|
|
||||||
// Restore the scroll position if we have one stored
|
// Restore the scroll position if we have one stored
|
||||||
@ -163,8 +163,8 @@ class MasterTimelineViewController: UITableViewController, UndoableCommandRunner
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func reinitializeArticles() {
|
func reinitializeArticles(resetScroll: Bool) {
|
||||||
resetUI()
|
resetUI(resetScroll: resetScroll)
|
||||||
}
|
}
|
||||||
|
|
||||||
func reloadArticles(animated: Bool) {
|
func reloadArticles(animated: Bool) {
|
||||||
@ -502,7 +502,7 @@ extension MasterTimelineViewController: UISearchBarDelegate {
|
|||||||
|
|
||||||
private extension MasterTimelineViewController {
|
private extension MasterTimelineViewController {
|
||||||
|
|
||||||
func resetUI() {
|
func resetUI(resetScroll: Bool) {
|
||||||
|
|
||||||
title = coordinator.timelineFeed?.nameForDisplay ?? "Timeline"
|
title = coordinator.timelineFeed?.nameForDisplay ?? "Timeline"
|
||||||
|
|
||||||
@ -535,7 +535,7 @@ private extension MasterTimelineViewController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
tableView.selectRow(at: nil, animated: false, scrollPosition: .top)
|
tableView.selectRow(at: nil, animated: false, scrollPosition: .top)
|
||||||
if dataSource.snapshot().itemIdentifiers(inSection: 0).count > 0 {
|
if resetScroll && dataSource.snapshot().itemIdentifiers(inSection: 0).count > 0 {
|
||||||
tableView.scrollToRow(at: IndexPath(row: 0, section: 0), at: .top, animated: false)
|
tableView.scrollToRow(at: IndexPath(row: 0, section: 0), at: .top, animated: false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -436,7 +436,7 @@ class SceneCoordinator: NSObject, UndoableCommandRunner, UnreadCountProvider {
|
|||||||
|
|
||||||
@objc func containerChildrenDidChange(_ note: Notification) {
|
@objc func containerChildrenDidChange(_ note: Notification) {
|
||||||
if timelineFetcherContainsAnyPseudoFeed() || timelineFetcherContainsAnyFolder() {
|
if timelineFetcherContainsAnyPseudoFeed() || timelineFetcherContainsAnyFolder() {
|
||||||
refreshTimeline()
|
refreshTimeline(resetScroll: false)
|
||||||
}
|
}
|
||||||
rebuildBackingStores()
|
rebuildBackingStores()
|
||||||
}
|
}
|
||||||
@ -460,7 +460,7 @@ class SceneCoordinator: NSObject, UndoableCommandRunner, UnreadCountProvider {
|
|||||||
|
|
||||||
if timelineFetcherContainsAnyPseudoFeed() {
|
if timelineFetcherContainsAnyPseudoFeed() {
|
||||||
fetchAndReplaceArticlesAsync(animated: true) {
|
fetchAndReplaceArticlesAsync(animated: true) {
|
||||||
self.masterTimelineViewController?.reinitializeArticles()
|
self.masterTimelineViewController?.reinitializeArticles(resetScroll: false)
|
||||||
self.rebuildBackingStores() {
|
self.rebuildBackingStores() {
|
||||||
expandNewlyActivatedAccount()
|
expandNewlyActivatedAccount()
|
||||||
}
|
}
|
||||||
@ -483,7 +483,7 @@ class SceneCoordinator: NSObject, UndoableCommandRunner, UnreadCountProvider {
|
|||||||
|
|
||||||
if timelineFetcherContainsAnyPseudoFeed() {
|
if timelineFetcherContainsAnyPseudoFeed() {
|
||||||
fetchAndReplaceArticlesAsync(animated: true) {
|
fetchAndReplaceArticlesAsync(animated: true) {
|
||||||
self.masterTimelineViewController?.reinitializeArticles()
|
self.masterTimelineViewController?.reinitializeArticles(resetScroll: false)
|
||||||
self.rebuildBackingStores() {
|
self.rebuildBackingStores() {
|
||||||
expandNewAccount()
|
expandNewAccount()
|
||||||
}
|
}
|
||||||
@ -505,7 +505,7 @@ class SceneCoordinator: NSObject, UndoableCommandRunner, UnreadCountProvider {
|
|||||||
|
|
||||||
if timelineFetcherContainsAnyPseudoFeed() {
|
if timelineFetcherContainsAnyPseudoFeed() {
|
||||||
fetchAndReplaceArticlesAsync(animated: true) {
|
fetchAndReplaceArticlesAsync(animated: true) {
|
||||||
self.masterTimelineViewController?.reinitializeArticles()
|
self.masterTimelineViewController?.reinitializeArticles(resetScroll: false)
|
||||||
self.rebuildBackingStores() {
|
self.rebuildBackingStores() {
|
||||||
cleanupAccount()
|
cleanupAccount()
|
||||||
}
|
}
|
||||||
@ -562,9 +562,9 @@ class SceneCoordinator: NSObject, UndoableCommandRunner, UnreadCountProvider {
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
func refreshTimeline() {
|
func refreshTimeline(resetScroll: Bool) {
|
||||||
fetchAndReplaceArticlesAsync(animated: true) {
|
fetchAndReplaceArticlesAsync(animated: true) {
|
||||||
self.masterTimelineViewController?.reinitializeArticles()
|
self.masterTimelineViewController?.reinitializeArticles(resetScroll: resetScroll)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -582,14 +582,14 @@ class SceneCoordinator: NSObject, UndoableCommandRunner, UnreadCountProvider {
|
|||||||
if let feedID = timelineFeed?.feedID {
|
if let feedID = timelineFeed?.feedID {
|
||||||
readFilterEnabledTable[feedID] = false
|
readFilterEnabledTable[feedID] = false
|
||||||
}
|
}
|
||||||
refreshTimeline()
|
refreshTimeline(resetScroll: false)
|
||||||
}
|
}
|
||||||
|
|
||||||
func hideReadArticles() {
|
func hideReadArticles() {
|
||||||
if let feedID = timelineFeed?.feedID {
|
if let feedID = timelineFeed?.feedID {
|
||||||
readFilterEnabledTable[feedID] = true
|
readFilterEnabledTable[feedID] = true
|
||||||
}
|
}
|
||||||
refreshTimeline()
|
refreshTimeline(resetScroll: false)
|
||||||
}
|
}
|
||||||
|
|
||||||
func isExpanded(_ node: Node) -> Bool {
|
func isExpanded(_ node: Node) -> Bool {
|
||||||
@ -764,7 +764,7 @@ 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 ip = currentFeedIndexPath, let node = nodeFor(ip), let feed = node.representedObject as? Feed {
|
||||||
timelineFeed = feed
|
timelineFeed = feed
|
||||||
masterTimelineViewController?.reinitializeArticles()
|
masterTimelineViewController?.reinitializeArticles(resetScroll: true)
|
||||||
replaceArticles(with: savedSearchArticles!, animated: true)
|
replaceArticles(with: savedSearchArticles!, animated: true)
|
||||||
} else {
|
} else {
|
||||||
setTimelineFeed(nil, animated: true)
|
setTimelineFeed(nil, animated: true)
|
||||||
@ -776,6 +776,7 @@ class SceneCoordinator: NSObject, UndoableCommandRunner, UnreadCountProvider {
|
|||||||
savedSearchArticles = nil
|
savedSearchArticles = nil
|
||||||
isSearching = false
|
isSearching = false
|
||||||
selectArticle(nil)
|
selectArticle(nil)
|
||||||
|
masterTimelineViewController?.focus()
|
||||||
}
|
}
|
||||||
|
|
||||||
func searchArticles(_ searchString: String, _ searchScope: SearchScope) {
|
func searchArticles(_ searchString: String, _ searchScope: SearchScope) {
|
||||||
@ -1264,7 +1265,7 @@ private extension SceneCoordinator {
|
|||||||
timelineMiddleIndexPath = nil
|
timelineMiddleIndexPath = nil
|
||||||
|
|
||||||
fetchAndReplaceArticlesAsync(animated: animated) {
|
fetchAndReplaceArticlesAsync(animated: animated) {
|
||||||
self.masterTimelineViewController?.reinitializeArticles()
|
self.masterTimelineViewController?.reinitializeArticles(resetScroll: true)
|
||||||
completion?()
|
completion?()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1843,7 +1844,9 @@ private extension SceneCoordinator {
|
|||||||
case .smartFeed:
|
case .smartFeed:
|
||||||
guard let smartFeed = SmartFeedsController.shared.find(by: feedIdentifier) else { return }
|
guard let smartFeed = SmartFeedsController.shared.find(by: feedIdentifier) else { return }
|
||||||
if let indexPath = indexPathFor(smartFeed) {
|
if let indexPath = indexPathFor(smartFeed) {
|
||||||
selectFeed(indexPath, animated: false)
|
selectFeed(indexPath, animated: false) {
|
||||||
|
self.masterFeedViewController.focus()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
case .script:
|
case .script:
|
||||||
@ -1854,7 +1857,9 @@ private extension SceneCoordinator {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
if let indexPath = indexPathFor(folderNode) {
|
if let indexPath = indexPathFor(folderNode) {
|
||||||
selectFeed(indexPath, animated: false)
|
selectFeed(indexPath, animated: false) {
|
||||||
|
self.masterFeedViewController.focus()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
case .webFeed(let accountID, let webFeedID):
|
case .webFeed(let accountID, let webFeedID):
|
||||||
@ -1865,7 +1870,9 @@ private extension SceneCoordinator {
|
|||||||
treeControllerDelegate.addFilterException(folderFeedID)
|
treeControllerDelegate.addFilterException(folderFeedID)
|
||||||
}
|
}
|
||||||
if let feed = feedNode.representedObject as? WebFeed {
|
if let feed = feedNode.representedObject as? WebFeed {
|
||||||
discloseFeed(feed, animated: false)
|
discloseFeed(feed, animated: false) {
|
||||||
|
self.masterFeedViewController.focus()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user