Show unread count in dock badge. Force-update unread counts at startup.

This commit is contained in:
Brent Simmons 2017-10-18 18:37:45 -07:00
parent 324f330a3b
commit fe29ccd2ed
3 changed files with 19 additions and 6 deletions

View File

@ -43,6 +43,8 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserInterfaceValidations {
NSWindow.allowsAutomaticWindowTabbing = false
super.init()
dockBadge.appDelegate = self
NotificationCenter.default.addObserver(self, selector: #selector(unreadCountDidChange(_:)), name: .UnreadCountDidChange, object: nil)
}
// MARK: - NSApplicationDelegate
@ -64,6 +66,10 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserInterfaceValidations {
#endif
NSAppleEventManager.shared().setEventHandler(self, andSelector: #selector(AppDelegate.getURL(_:_:)), forEventClass: AEEventClass(kInternetEventClass), andEventID: AEEventID(kAEGetURL))
DispatchQueue.main.async {
self.unreadCount = AccountManager.shared.unreadCount
}
}
func applicationShouldHandleReopen(_ sender: NSApplication, hasVisibleWindows flag: Bool) -> Bool {
@ -103,9 +109,11 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserInterfaceValidations {
// MARK: Notifications
func unreadCountDidChange(_ note: Notification) {
@objc func unreadCountDidChange(_ note: Notification) {
unreadCount = AccountManager.shared.unreadCount
if note.object is AccountManager {
unreadCount = AccountManager.shared.unreadCount
}
}
// MARK: Main Window

View File

@ -138,6 +138,10 @@ public final class Account: DisplayNameProvider, UnreadCountProvider, Container,
NotificationCenter.default.addObserver(self, selector: #selector(unreadCountDidChange(_:)), name: .UnreadCountDidChange, object: nil)
pullObjectsFromDisk()
DispatchQueue.main.async {
self.updateUnreadCount()
}
}
// MARK: - API

View File

@ -80,6 +80,10 @@ public final class AccountManager: UnreadCountProvider {
readNonLocalAccountsFromDisk()
NotificationCenter.default.addObserver(self, selector: #selector(unreadCountDidChange(_:)), name: .UnreadCountDidChange, object: nil)
DispatchQueue.main.async {
self.updateUnreadCount()
}
}
// MARK: API
@ -117,10 +121,7 @@ public final class AccountManager: UnreadCountProvider {
func updateUnreadCount() {
let updatedUnreadCount = calculateUnreadCount(accounts)
if updatedUnreadCount != unreadCount {
unreadCount = updatedUnreadCount
}
unreadCount = calculateUnreadCount(accounts)
}
// MARK: Notifications