mirror of
https://github.com/Ranchero-Software/NetNewsWire
synced 2025-08-12 06:26:36 +00:00
Use ItemIdentifier and itemID instead of FeedIdentifier and feedID. (FeedIdentifier was renamed to ItemIdentifier.)
This commit is contained in:
@@ -100,7 +100,7 @@ protocol SidebarDelegate: AnyObject {
|
||||
func saveState(to state: inout [AnyHashable : Any]) {
|
||||
state[UserInfoKey.readFeedsFilterState] = isReadFiltered
|
||||
state[UserInfoKey.containerExpandedWindowState] = expandedTable.map { $0.userInfo }
|
||||
state[UserInfoKey.selectedFeedsState] = selectedFeeds.compactMap { $0.feedID?.userInfo }
|
||||
state[UserInfoKey.selectedFeedsState] = selectedFeeds.compactMap { $0.itemID?.userInfo }
|
||||
}
|
||||
|
||||
func restoreState(from state: [AnyHashable : Any]) {
|
||||
@@ -114,22 +114,22 @@ protocol SidebarDelegate: AnyObject {
|
||||
return
|
||||
}
|
||||
|
||||
let selectedFeedIdentifers = Set(selectedFeedsState.compactMap( { FeedIdentifier(userInfo: $0) }))
|
||||
selectedFeedIdentifers.forEach { treeControllerDelegate.addFilterException($0) }
|
||||
let selectedItemIdentifers = Set(selectedFeedsState.compactMap( { ItemIdentifier(userInfo: $0) }))
|
||||
selectedItemIdentifers.forEach { treeControllerDelegate.addFilterException($0) }
|
||||
|
||||
rebuildTreeAndReloadDataIfNeeded()
|
||||
|
||||
var selectIndexes = IndexSet()
|
||||
|
||||
func selectFeedsVisitor(node: Node) {
|
||||
if let feedID = (node.representedObject as? FeedIdentifiable)?.feedID {
|
||||
if selectedFeedIdentifers.contains(feedID) {
|
||||
func selectItemsVisitor(node: Node) {
|
||||
if let itemID = (node.representedObject as? ItemIdentifiable)?.itemID {
|
||||
if selectedItemIdentifers.contains(itemID) {
|
||||
selectIndexes.insert(outlineView.row(forItem: node) )
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
treeController.visitNodes(selectFeedsVisitor(node:))
|
||||
treeController.visitNodes(selectItemsVisitor(node:))
|
||||
outlineView.selectRowIndexes(selectIndexes, byExtendingSelection: false)
|
||||
focus()
|
||||
|
||||
@@ -456,13 +456,13 @@ protocol SidebarDelegate: AnyObject {
|
||||
// MARK: - API
|
||||
|
||||
func selectFeed(_ feed: FeedProtocol) {
|
||||
if isReadFiltered, let feedID = feed.feedID {
|
||||
self.treeControllerDelegate.addFilterException(feedID)
|
||||
if isReadFiltered, let itemID = feed.itemID {
|
||||
self.treeControllerDelegate.addFilterException(itemID)
|
||||
|
||||
if let webFeed = feed as? WebFeed, let account = webFeed.account {
|
||||
let parentFolder = account.sortedFolders?.first(where: { $0.objectIsChild(webFeed) })
|
||||
if let parentFolderFeedID = parentFolder?.feedID {
|
||||
self.treeControllerDelegate.addFilterException(parentFolderFeedID)
|
||||
if let parentFolderItemID = parentFolder?.itemID {
|
||||
self.treeControllerDelegate.addFilterException(parentFolderItemID)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -544,16 +544,16 @@ private extension SidebarViewController {
|
||||
}
|
||||
|
||||
func addToFilterExeptionsIfNecessary(_ feed: FeedProtocol?) {
|
||||
if isReadFiltered, let feedID = feed?.feedID {
|
||||
if isReadFiltered, let itemID = feed?.itemID {
|
||||
if feed is PseudoFeed {
|
||||
treeControllerDelegate.addFilterException(feedID)
|
||||
treeControllerDelegate.addFilterException(itemID)
|
||||
} else if let folderFeed = feed as? Folder {
|
||||
if folderFeed.account?.existingFolder(withID: folderFeed.folderID) != nil {
|
||||
treeControllerDelegate.addFilterException(feedID)
|
||||
treeControllerDelegate.addFilterException(itemID)
|
||||
}
|
||||
} else if let webFeed = feed as? WebFeed {
|
||||
if webFeed.account?.existingWebFeed(withWebFeedID: webFeed.webFeedID) != nil {
|
||||
treeControllerDelegate.addFilterException(feedID)
|
||||
treeControllerDelegate.addFilterException(itemID)
|
||||
addParentFolderToFilterExceptions(webFeed)
|
||||
}
|
||||
}
|
||||
@@ -563,11 +563,11 @@ private extension SidebarViewController {
|
||||
func addParentFolderToFilterExceptions(_ feed: FeedProtocol) {
|
||||
guard let node = treeController.rootNode.descendantNodeRepresentingObject(feed as AnyObject),
|
||||
let folder = node.parent?.representedObject as? Folder,
|
||||
let folderFeedID = folder.feedID else {
|
||||
let folderItemID = folder.itemID else {
|
||||
return
|
||||
}
|
||||
|
||||
treeControllerDelegate.addFilterException(folderFeedID)
|
||||
treeControllerDelegate.addFilterException(folderItemID)
|
||||
}
|
||||
|
||||
|
||||
@@ -621,8 +621,8 @@ private extension SidebarViewController {
|
||||
}
|
||||
|
||||
func addTreeControllerToFilterExceptionsVisitor(node: Node) {
|
||||
if let feed = node.representedObject as? FeedProtocol, let feedID = feed.feedID {
|
||||
treeControllerDelegate.addFilterException(feedID)
|
||||
if let feed = node.representedObject as? FeedProtocol, let itemID = feed.itemID {
|
||||
treeControllerDelegate.addFilterException(itemID)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ final class TimelineViewController: NSViewController, UndoableCommandRunner, Unr
|
||||
|
||||
@IBOutlet var tableView: TimelineTableView!
|
||||
|
||||
private var readFilterEnabledTable = [FeedIdentifier: Bool]()
|
||||
private var readFilterEnabledTable = [ItemIdentifier: Bool]()
|
||||
var isReadFiltered: Bool? {
|
||||
guard representedObjects?.count == 1, let timelineFeed = representedObjects?.first as? FeedProtocol else {
|
||||
return nil
|
||||
@@ -35,7 +35,7 @@ final class TimelineViewController: NSViewController, UndoableCommandRunner, Unr
|
||||
guard timelineFeed.defaultReadFilterType != .alwaysRead else {
|
||||
return nil
|
||||
}
|
||||
if let feedID = timelineFeed.feedID, let readFilterEnabled = readFilterEnabledTable[feedID] {
|
||||
if let itemID = timelineFeed.itemID, let readFilterEnabled = readFilterEnabledTable[itemID] {
|
||||
return readFilterEnabled
|
||||
} else {
|
||||
return timelineFeed.defaultReadFilterType == .read
|
||||
@@ -281,8 +281,8 @@ final class TimelineViewController: NSViewController, UndoableCommandRunner, Unr
|
||||
}
|
||||
|
||||
func toggleReadFilter() {
|
||||
guard let filter = isReadFiltered, let feedID = (representedObjects?.first as? FeedProtocol)?.feedID else { return }
|
||||
readFilterEnabledTable[feedID] = !filter
|
||||
guard let filter = isReadFiltered, let itemID = (representedObjects?.first as? FeedProtocol)?.itemID else { return }
|
||||
readFilterEnabledTable[itemID] = !filter
|
||||
delegate?.timelineInvalidatedRestorationState(self)
|
||||
fetchAndReplacePreservingSelection()
|
||||
}
|
||||
@@ -305,8 +305,8 @@ final class TimelineViewController: NSViewController, UndoableCommandRunner, Unr
|
||||
}
|
||||
|
||||
for i in 0..<readArticlesFilterStateKeys.count {
|
||||
if let feedIdentifier = FeedIdentifier(userInfo: readArticlesFilterStateKeys[i]) {
|
||||
readFilterEnabledTable[feedIdentifier] = readArticlesFilterStateValues[i]
|
||||
if let itemIdentifier = ItemIdentifier(userInfo: readArticlesFilterStateKeys[i]) {
|
||||
readFilterEnabledTable[itemIdentifier] = readArticlesFilterStateValues[i]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user