Add queueUpdateDockBadge. Use PostponingBlock instead of CoalescingQueue.

This commit is contained in:
Brent Simmons 2024-06-12 17:40:16 -07:00
parent 950995688c
commit 57399838dc

View File

@ -70,10 +70,14 @@ import Sparkle
@IBOutlet var groupArticlesByFeedMenuItem: NSMenuItem! @IBOutlet var groupArticlesByFeedMenuItem: NSMenuItem!
@IBOutlet var checkForUpdatesMenuItem: NSMenuItem! @IBOutlet var checkForUpdatesMenuItem: NSMenuItem!
private lazy var postponingUpdateDockBadgeBlock: PostponingBlock = {
PostponingBlock(delayInterval: 0.05, name: "Update Dock Badge", block: updateDockBadge)
}()
var unreadCount = 0 { var unreadCount = 0 {
didSet { didSet {
if unreadCount != oldValue { if unreadCount != oldValue {
CoalescingQueue.standard.add(self, #selector(updateDockBadge)) queueUpdateDockBadge()
NotificationCenter.default.post(name: .appUnreadCountDidChange, object: self, userInfo: nil) NotificationCenter.default.post(name: .appUnreadCountDidChange, object: self, userInfo: nil)
postUnreadCountDidChangeNotification() postUnreadCountDidChangeNotification()
} }
@ -401,7 +405,7 @@ import Sparkle
lastRefreshInterval = AppDefaults.shared.refreshInterval lastRefreshInterval = AppDefaults.shared.refreshInterval
} }
updateDockBadge() queueUpdateDockBadge()
} }
@objc func didWakeNotification(_ note: Notification) { @objc func didWakeNotification(_ note: Notification) {
@ -536,7 +540,12 @@ import Sparkle
} }
// MARK: - Dock Badge // MARK: - Dock Badge
@objc func updateDockBadge() {
func queueUpdateDockBadge() {
postponingUpdateDockBadgeBlock.runInFuture()
}
func updateDockBadge() {
let label = unreadCount > 0 ? "\(unreadCount)" : "" let label = unreadCount > 0 ? "\(unreadCount)" : ""
NSApplication.shared.dockTile.badgeLabel = label NSApplication.shared.dockTile.badgeLabel = label
} }