diff --git a/Mac/MainWindow/MainWindowController.swift b/Mac/MainWindow/MainWindowController.swift index b677fa6eb..3dd2a93f1 100644 --- a/Mac/MainWindow/MainWindowController.swift +++ b/Mac/MainWindow/MainWindowController.swift @@ -918,9 +918,7 @@ private extension MainWindowController { } func validateCleanUp(_ item: NSValidatedUserInterfaceItem) -> Bool { - let isSidebarFiltered = sidebarViewController?.isReadFiltered ?? false - let isTimelineFiltered = timelineContainerViewController?.isReadFiltered ?? false - return isSidebarFiltered || isTimelineFiltered + return timelineContainerViewController?.isCleanUpAvailable ?? false } func validateToggleReadFeeds(_ item: NSValidatedUserInterfaceItem) -> Bool { diff --git a/Mac/MainWindow/Timeline/TimelineContainerViewController.swift b/Mac/MainWindow/Timeline/TimelineContainerViewController.swift index 6972d9aa1..b43b210fd 100644 --- a/Mac/MainWindow/Timeline/TimelineContainerViewController.swift +++ b/Mac/MainWindow/Timeline/TimelineContainerViewController.swift @@ -45,6 +45,11 @@ final class TimelineContainerViewController: NSViewController { return regularTimelineViewController.isReadFiltered } + var isCleanUpAvailable: Bool { + guard let currentTimelineViewController = currentTimelineViewController, mode(for: currentTimelineViewController) == .regular else { return false } + return regularTimelineViewController.isCleanUpAvailable + } + lazy var regularTimelineViewController = { return TimelineViewController(delegate: self) }() diff --git a/Mac/MainWindow/Timeline/TimelineViewController.swift b/Mac/MainWindow/Timeline/TimelineViewController.swift index 6c05d015c..4f9110c3f 100644 --- a/Mac/MainWindow/Timeline/TimelineViewController.swift +++ b/Mac/MainWindow/Timeline/TimelineViewController.swift @@ -43,6 +43,15 @@ final class TimelineViewController: NSViewController, UndoableCommandRunner, Unr } } + var isCleanUpAvailable: Bool { + guard isReadFiltered ?? false else { return false } + + let readSelectedCount = selectedArticles.filter({ $0.status.read }).count + let readArticleCount = articles.count - unreadCount + let availableToCleanCount = readArticleCount - readSelectedCount + return availableToCleanCount > 0 + } + var representedObjects: [AnyObject]? { didSet { if !representedObjectArraysAreEqual(oldValue, representedObjects) {