diff --git a/Mac/MainWindow/MainWindowController.swift b/Mac/MainWindow/MainWindowController.swift index d866b2511..1a7cf28c7 100644 --- a/Mac/MainWindow/MainWindowController.swift +++ b/Mac/MainWindow/MainWindowController.swift @@ -227,6 +227,10 @@ class MainWindowController : NSWindowController, NSUserInterfaceValidations { return true } + + if item.action == #selector(showAddFeedWindow(_:)) { + return canAddNewFeed() + } return true } @@ -591,6 +595,10 @@ private extension MainWindowController { return currentTimelineViewController?.canMarkAllAsRead() ?? false } + + func canAddNewFeed() -> Bool { + return sidebarViewController?.canAddNewFeed() ?? false + } func validateToggleRead(_ item: NSValidatedUserInterfaceItem) -> Bool { diff --git a/Mac/MainWindow/Sidebar/SidebarViewController.swift b/Mac/MainWindow/Sidebar/SidebarViewController.swift index 8e2be6b86..19a66cdcd 100644 --- a/Mac/MainWindow/Sidebar/SidebarViewController.swift +++ b/Mac/MainWindow/Sidebar/SidebarViewController.swift @@ -345,10 +345,9 @@ protocol SidebarDelegate: class { // MARK: - API func rebuildTreeAndRestoreSelection() { - - let savedAccounts = treeController.rootNode.childNodes.compactMap { $0.representedObject as? Account } - + let savedAccounts = accountNodes let savedSelection = selectedNodes + rebuildTreeAndReloadDataIfNeeded() restoreSelection(to: savedSelection, sendNotificationIfChanged: true) @@ -361,6 +360,11 @@ protocol SidebarDelegate: class { } } + + func canAddNewFeed() -> Bool { + return !accountNodes.isEmpty + } + } // MARK: - NSUserInterfaceValidations @@ -380,6 +384,10 @@ extension SidebarViewController: NSUserInterfaceValidations { private extension SidebarViewController { + var accountNodes: [Account] { + return treeController.rootNode.childNodes.compactMap { $0.representedObject as? Account } + } + var selectedNodes: [Node] { if let nodes = outlineView.selectedItems as? [Node] { return nodes