From 95268db09b6e333e9ea419cd37387e25d18d29ba Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Sat, 17 Feb 2018 18:10:00 -0800 Subject: [PATCH] Use CoalescingQueue with the refresh progress indicator in the sidebar. --- .../Sidebar/SidebarStatusBarView.swift | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/Evergreen/MainWindow/Sidebar/SidebarStatusBarView.swift b/Evergreen/MainWindow/Sidebar/SidebarStatusBarView.swift index 3bbf5e8a4..d82c58e7b 100644 --- a/Evergreen/MainWindow/Sidebar/SidebarStatusBarView.swift +++ b/Evergreen/MainWindow/Sidebar/SidebarStatusBarView.swift @@ -23,7 +23,12 @@ final class SidebarStatusBarView: NSView { progressLabel.isHidden = !isAnimatingProgress } } - + + private var progress: CombinedRefreshProgress? = nil { + didSet { + CoalescingQueue.standard.add(self, #selector(updateUI)) + } + } override var isFlipped: Bool { return true } @@ -40,28 +45,23 @@ final class SidebarStatusBarView: NSView { NotificationCenter.default.addObserver(self, selector: #selector(progressDidChange(_:)), name: .AccountRefreshProgressDidChange, object: nil) } - // MARK: Notifications + @objc func updateUI() { - @objc dynamic func progressDidChange(_ notification: Notification) { + guard let progress = progress else { + stopProgressIfNeeded() + return + } - let progress = AccountManager.shared.combinedRefreshProgress updateProgressIndicator(progress) updateProgressLabel(progress) } - // MARK: Drawing + // MARK: Notifications -// private let lineColor = NSColor(calibratedWhite: 0.57, alpha: 1.0) -// -// override func draw(_ dirtyRect: NSRect) { -// -// let path = NSBezierPath() -// path.lineWidth = 1.0 -// path.move(to: NSPoint(x: NSMinX(bounds), y: NSMinY(bounds) + 0.5)) -// path.line(to: NSPoint(x: NSMaxX(bounds), y: NSMinY(bounds) + 0.5)) -// lineColor.set() -// path.stroke() -// } + @objc dynamic func progressDidChange(_ notification: Notification) { + + progress = AccountManager.shared.combinedRefreshProgress + } } private extension SidebarStatusBarView {