mirror of
https://github.com/Ranchero-Software/NetNewsWire
synced 2025-08-12 06:26:36 +00:00
Fix hanging progress indicator in Feeds view on iOS.
This commit is contained in:
@@ -246,7 +246,7 @@ public final class AccountManager: UnreadCountProvider {
|
||||
return
|
||||
}
|
||||
|
||||
combinedRefreshProgress.reset()
|
||||
combinedRefreshProgress.start()
|
||||
|
||||
let group = DispatchGroup()
|
||||
|
||||
@@ -264,7 +264,7 @@ public final class AccountManager: UnreadCountProvider {
|
||||
}
|
||||
|
||||
group.notify(queue: DispatchQueue.main) {
|
||||
self.combinedRefreshProgress.reset()
|
||||
self.combinedRefreshProgress.stop()
|
||||
completion?()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,29 +22,32 @@ public final class CombinedRefreshProgress {
|
||||
public private(set) var numberCompleted = 0
|
||||
|
||||
public var isComplete: Bool {
|
||||
numberRemaining < 1
|
||||
!isStarted || numberRemaining < 1
|
||||
}
|
||||
|
||||
var isStarted = false
|
||||
|
||||
init() {
|
||||
|
||||
NotificationCenter.default.addObserver(self, selector: #selector(refreshProgressDidChange(_:)), name: .DownloadProgressDidChange, object: nil)
|
||||
}
|
||||
|
||||
func reset() {
|
||||
func start() {
|
||||
reset()
|
||||
isStarted = true
|
||||
}
|
||||
|
||||
let didMakeChange = numberOfTasks != 0 || numberRemaining != 0 || numberCompleted != 0
|
||||
|
||||
numberOfTasks = 0
|
||||
numberRemaining = 0
|
||||
numberCompleted = 0
|
||||
|
||||
if didMakeChange {
|
||||
postDidChangeNotification()
|
||||
}
|
||||
func stop() {
|
||||
reset()
|
||||
isStarted = false
|
||||
}
|
||||
|
||||
@objc func refreshProgressDidChange(_ notification: Notification) {
|
||||
|
||||
guard isStarted else {
|
||||
return
|
||||
}
|
||||
|
||||
var updatedNumberOfTasks = 0
|
||||
var updatedNumberRemaining = 0
|
||||
var updatedNumberCompleted = 0
|
||||
@@ -87,6 +90,19 @@ public final class CombinedRefreshProgress {
|
||||
|
||||
private extension CombinedRefreshProgress {
|
||||
|
||||
func reset() {
|
||||
|
||||
let didMakeChange = numberOfTasks != 0 || numberRemaining != 0 || numberCompleted != 0
|
||||
|
||||
numberOfTasks = 0
|
||||
numberRemaining = 0
|
||||
numberCompleted = 0
|
||||
|
||||
if didMakeChange {
|
||||
postDidChangeNotification()
|
||||
}
|
||||
}
|
||||
|
||||
func postDidChangeNotification() {
|
||||
|
||||
NotificationCenter.default.post(name: .combinedRefreshProgressDidChange, object: self)
|
||||
|
||||
@@ -15,7 +15,8 @@ class RefreshProgressView: UIView {
|
||||
@IBOutlet weak var label: UILabel!
|
||||
|
||||
override func awakeFromNib() {
|
||||
NotificationCenter.default.addObserver(self, selector: #selector(progressDidChange(_:)), name: .AccountRefreshProgressDidChange, object: nil)
|
||||
|
||||
NotificationCenter.default.addObserver(self, selector: #selector(progressDidChange(_:)), name: .combinedRefreshProgressDidChange, object: nil)
|
||||
NotificationCenter.default.addObserver(self, selector: #selector(contentSizeCategoryDidChange(_:)), name: UIContentSizeCategory.didChangeNotification, object: nil)
|
||||
update()
|
||||
scheduleUpdateRefreshLabel()
|
||||
|
||||
Reference in New Issue
Block a user