Update the Today timeline and unread count when the day changes. Issue #627

This commit is contained in:
Maurice Parker 2019-05-29 10:24:30 -05:00
parent 0648053417
commit 8fc6e81ddf
2 changed files with 20 additions and 0 deletions

View File

@ -60,6 +60,7 @@ protocol SidebarDelegate: class {
NotificationCenter.default.addObserver(self, selector: #selector(feedSettingDidChange(_:)), name: .FeedSettingDidChange, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(feedSettingDidChange(_:)), name: .FeedSettingDidChange, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(displayNameDidChange(_:)), name: .DisplayNameDidChange, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(displayNameDidChange(_:)), name: .DisplayNameDidChange, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(userDidRequestSidebarSelection(_:)), name: .UserDidRequestSidebarSelection, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(userDidRequestSidebarSelection(_:)), name: .UserDidRequestSidebarSelection, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(calendarDayChanged(_:)), name: .NSCalendarDayChanged, object: nil)
outlineView.reloadData() outlineView.reloadData()
@ -165,6 +166,12 @@ protocol SidebarDelegate: class {
revealAndSelectRepresentedObject(feed as AnyObject) revealAndSelectRepresentedObject(feed as AnyObject)
} }
@objc func calendarDayChanged(_ note: Notification) {
DispatchQueue.main.async {
SmartFeedsController.shared.todayFeed.fetchUnreadCounts()
}
}
// MARK: - Actions // MARK: - Actions
@IBAction func delete(_ sender: AnyObject?) { @IBAction func delete(_ sender: AnyObject?) {

View File

@ -147,6 +147,7 @@ final class TimelineViewController: NSViewController, UndoableCommandRunner {
NotificationCenter.default.addObserver(self, selector: #selector(accountStateDidChange(_:)), name: .AccountStateDidChange, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(accountStateDidChange(_:)), name: .AccountStateDidChange, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(accountsDidChange(_:)), name: .AccountsDidChange, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(accountsDidChange(_:)), name: .AccountsDidChange, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(userDefaultsDidChange(_:)), name: UserDefaults.didChangeNotification, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(userDefaultsDidChange(_:)), name: UserDefaults.didChangeNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(calendarDayChanged(_:)), name: .NSCalendarDayChanged, object: nil)
didRegisterForNotifications = true didRegisterForNotifications = true
} }
@ -511,6 +512,14 @@ final class TimelineViewController: NSViewController, UndoableCommandRunner {
self.fontSize = AppDefaults.timelineFontSize self.fontSize = AppDefaults.timelineFontSize
self.sortDirection = AppDefaults.timelineSortDirection self.sortDirection = AppDefaults.timelineSortDirection
} }
@objc func calendarDayChanged(_ note: Notification) {
if representedObjectsContainsTodayFeed() {
DispatchQueue.main.async { [weak self] in
self?.fetchArticles()
}
}
}
// MARK: - Reloading Data // MARK: - Reloading Data
@ -966,6 +975,10 @@ private extension TimelineViewController {
return representedObjects?.contains(where: { $0 is PseudoFeed}) ?? false return representedObjects?.contains(where: { $0 is PseudoFeed}) ?? false
} }
func representedObjectsContainsTodayFeed() -> Bool {
return representedObjects?.contains(where: { $0 === SmartFeedsController.shared.todayFeed }) ?? false
}
func representedObjectsContainsAnyFeed(_ feeds: Set<Feed>) -> Bool { func representedObjectsContainsAnyFeed(_ feeds: Set<Feed>) -> Bool {
// Return true if theres a match or if a folder contains (recursively) one of feeds // Return true if theres a match or if a folder contains (recursively) one of feeds