Merge pull request #648 from philviso/FixedAddNewFeedCrash

Fixed a crash that occurs when trying to add a new feed with no active accounts
This commit is contained in:
Maurice Parker 2019-05-19 09:50:28 -05:00 committed by GitHub
commit d42398b028
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 31 additions and 3 deletions

View File

@ -227,6 +227,14 @@ class MainWindowController : NSWindowController, NSUserInterfaceValidations {
return true
}
if item.action == #selector(showAddFeedWindow(_:)) {
return canAddNewFeed()
}
if item.action == #selector(showAddFolderWindow(_:)) {
return canAddNewFolder()
}
return true
}
@ -591,6 +599,14 @@ private extension MainWindowController {
return currentTimelineViewController?.canMarkAllAsRead() ?? false
}
func canAddNewFeed() -> Bool {
return sidebarViewController?.canAddNewFeed() ?? false
}
func canAddNewFolder() -> Bool {
return sidebarViewController?.canAddNewFolder() ?? false
}
func validateToggleRead(_ item: NSValidatedUserInterfaceItem) -> Bool {

View File

@ -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,15 @@ protocol SidebarDelegate: class {
}
}
func canAddNewFeed() -> Bool {
return !accountNodes.isEmpty
}
func canAddNewFolder() -> Bool {
return !accountNodes.isEmpty
}
}
// MARK: - NSUserInterfaceValidations
@ -380,6 +388,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