Use sidebarItemID in place of feedID or feedIdentifier when the type is SidebarItemID.

This commit is contained in:
Brent Simmons 2024-02-26 21:47:24 -08:00
parent f03356151e
commit 0929aedd46
4 changed files with 36 additions and 36 deletions

View File

@ -287,8 +287,8 @@ final class TimelineViewController: NSViewController, UndoableCommandRunner, Unr
}
for i in 0..<readArticlesFilterStateKeys.count {
if let feedIdentifier = SidebarItemIdentifier(userInfo: readArticlesFilterStateKeys[i]) {
readFilterEnabledTable[feedIdentifier] = readArticlesFilterStateValues[i]
if let sidebarItemID = SidebarItemIdentifier(userInfo: readArticlesFilterStateKeys[i]) {
readFilterEnabledTable[sidebarItemID] = readArticlesFilterStateValues[i]
}
}

View File

@ -20,11 +20,11 @@ class IconImageCache {
private var smallIconImageCache = [SidebarItemIdentifier: IconImage]()
private var authorIconImageCache = [Author: IconImage]()
func imageFor(_ feedID: SidebarItemIdentifier) -> IconImage? {
if let smartFeed = SmartFeedsController.shared.find(by: feedID) {
func imageFor(_ sidebarItemID: SidebarItemIdentifier) -> IconImage? {
if let smartFeed = SmartFeedsController.shared.find(by: sidebarItemID) {
return imageForFeed(smartFeed)
}
if let feed = AccountManager.shared.existingSidebarItem(with: feedID) {
if let feed = AccountManager.shared.existingSidebarItem(with: sidebarItemID) {
return imageForFeed(feed)
}
return nil
@ -69,41 +69,41 @@ class IconImageCache {
private extension IconImageCache {
func imageForSmartFeed(_ smartFeed: PseudoFeed, _ feedID: SidebarItemIdentifier) -> IconImage? {
if let iconImage = smartFeedIconImageCache[feedID] {
func imageForSmartFeed(_ smartFeed: PseudoFeed, _ sidebarItemID: SidebarItemIdentifier) -> IconImage? {
if let iconImage = smartFeedIconImageCache[sidebarItemID] {
return iconImage
}
if let iconImage = smartFeed.smallIcon {
smartFeedIconImageCache[feedID] = iconImage
smartFeedIconImageCache[sidebarItemID] = iconImage
return iconImage
}
return nil
}
func imageForFeed(_ feed: Feed, _ feedID: SidebarItemIdentifier) -> IconImage? {
if let iconImage = feedIconImageCache[feedID] {
func imageForFeed(_ feed: Feed, _ sidebarItemID: SidebarItemIdentifier) -> IconImage? {
if let iconImage = feedIconImageCache[sidebarItemID] {
return iconImage
}
if let iconImage = appDelegate.feedIconDownloader.icon(for: feed) {
feedIconImageCache[feedID] = iconImage
feedIconImageCache[sidebarItemID] = iconImage
return iconImage
}
if let faviconImage = faviconImageCache[feedID] {
if let faviconImage = faviconImageCache[sidebarItemID] {
return faviconImage
}
if let faviconImage = appDelegate.faviconDownloader.faviconAsIcon(for: feed) {
faviconImageCache[feedID] = faviconImage
faviconImageCache[sidebarItemID] = faviconImage
return faviconImage
}
return nil
}
func imageForSmallIconProvider(_ provider: SmallIconProvider, _ feedID: SidebarItemIdentifier) -> IconImage? {
if let iconImage = smallIconImageCache[feedID] {
func imageForSmallIconProvider(_ provider: SmallIconProvider, _ sidebarItemID: SidebarItemIdentifier) -> IconImage? {
if let iconImage = smallIconImageCache[sidebarItemID] {
return iconImage
}
if let iconImage = provider.smallIcon {
smallIconImageCache[feedID] = iconImage
smallIconImageCache[sidebarItemID] = iconImage
return iconImage
}
return nil

View File

@ -16,8 +16,8 @@ final class FeedTreeControllerDelegate: TreeControllerDelegate {
private var filterExceptions = Set<SidebarItemIdentifier>()
var isReadFiltered = false
func addFilterException(_ feedID: SidebarItemIdentifier) {
filterExceptions.insert(feedID)
func addFilterException(_ sidebarItemID: SidebarItemIdentifier) {
filterExceptions.insert(sidebarItemID)
}
func resetFilterExceptions() {

View File

@ -33,15 +33,15 @@ enum ShowFeedName {
struct FeedNode: Hashable {
var node: Node
var feedID: SidebarItemIdentifier
var sidebarItemID: SidebarItemIdentifier
init(_ node: Node) {
self.node = node
self.feedID = (node.representedObject as! SidebarItem).sidebarItemID!
self.sidebarItemID = (node.representedObject as! SidebarItem).sidebarItemID!
}
func hash(into hasher: inout Hasher) {
hasher.combine(feedID)
hasher.combine(sidebarItemID)
}
}
@ -355,8 +355,8 @@ class SceneCoordinator: NSObject, UndoableCommandRunner {
if let readArticlesFilterState = windowState[UserInfoKey.readArticlesFilterState] as? [[AnyHashable: AnyHashable]: Bool] {
for key in readArticlesFilterState.keys {
if let feedIdentifier = SidebarItemIdentifier(userInfo: key) {
readFilterEnabledTable[feedIdentifier] = readArticlesFilterState[key]
if let sidebarItemID = SidebarItemIdentifier(userInfo: key) {
readFilterEnabledTable[sidebarItemID] = readArticlesFilterState[key]
}
}
}
@ -2209,16 +2209,16 @@ private extension SceneCoordinator {
func handleSelectFeed(_ userInfo: [AnyHashable : Any]?) {
guard let userInfo = userInfo,
let feedIdentifierUserInfo = userInfo[UserInfoKey.feedIdentifier] as? [AnyHashable : AnyHashable],
let feedIdentifier = SidebarItemIdentifier(userInfo: feedIdentifierUserInfo) else {
let sidebarItemID = SidebarItemIdentifier(userInfo: feedIdentifierUserInfo) else {
return
}
treeControllerDelegate.addFilterException(feedIdentifier)
treeControllerDelegate.addFilterException(sidebarItemID)
switch feedIdentifier {
switch sidebarItemID {
case .smartFeed:
guard let smartFeed = SmartFeedsController.shared.find(by: feedIdentifier) else { return }
guard let smartFeed = SmartFeedsController.shared.find(by: sidebarItemID) else { return }
markExpanded(SmartFeedsController.shared)
rebuildBackingStores(initialLoad: true, completion: {
@ -2294,29 +2294,29 @@ private extension SceneCoordinator {
func restoreFeedSelection(_ userInfo: [AnyHashable : Any], accountID: String, feedID: String, articleID: String) -> Bool {
guard let feedIdentifierUserInfo = userInfo[UserInfoKey.feedIdentifier] as? [AnyHashable : AnyHashable],
let feedIdentifier = SidebarItemIdentifier(userInfo: feedIdentifierUserInfo),
let sidebarItemID = SidebarItemIdentifier(userInfo: feedIdentifierUserInfo),
let isShowingExtractedArticle = userInfo[UserInfoKey.isShowingExtractedArticle] as? Bool,
let articleWindowScrollY = userInfo[UserInfoKey.articleWindowScrollY] as? Int else {
return false
}
switch feedIdentifier {
switch sidebarItemID {
case .script:
return false
case .smartFeed, .folder:
let found = selectFeedAndArticle(feedIdentifier: feedIdentifier, articleID: articleID, isShowingExtractedArticle: isShowingExtractedArticle, articleWindowScrollY: articleWindowScrollY)
let found = selectFeedAndArticle(sidebarItemID: sidebarItemID, articleID: articleID, isShowingExtractedArticle: isShowingExtractedArticle, articleWindowScrollY: articleWindowScrollY)
if found {
treeControllerDelegate.addFilterException(feedIdentifier)
treeControllerDelegate.addFilterException(sidebarItemID)
}
return found
case .feed:
let found = selectFeedAndArticle(feedIdentifier: feedIdentifier, articleID: articleID, isShowingExtractedArticle: isShowingExtractedArticle, articleWindowScrollY: articleWindowScrollY)
let found = selectFeedAndArticle(sidebarItemID: sidebarItemID, articleID: articleID, isShowingExtractedArticle: isShowingExtractedArticle, articleWindowScrollY: articleWindowScrollY)
if found {
treeControllerDelegate.addFilterException(feedIdentifier)
if let feedNode = nodeFor(sidebarItemID: feedIdentifier), let folder = feedNode.parent?.representedObject as? Folder, let folderFeedID = folder.sidebarItemID {
treeControllerDelegate.addFilterException(sidebarItemID)
if let feedNode = nodeFor(sidebarItemID: sidebarItemID), let folder = feedNode.parent?.representedObject as? Folder, let folderFeedID = folder.sidebarItemID {
treeControllerDelegate.addFilterException(folderFeedID)
}
}
@ -2352,8 +2352,8 @@ private extension SceneCoordinator {
return nil
}
func selectFeedAndArticle(feedIdentifier: SidebarItemIdentifier, articleID: String, isShowingExtractedArticle: Bool, articleWindowScrollY: Int) -> Bool {
guard let feedNode = nodeFor(sidebarItemID: feedIdentifier), let feedIndexPath = indexPathFor(feedNode) else { return false }
func selectFeedAndArticle(sidebarItemID: SidebarItemIdentifier, articleID: String, isShowingExtractedArticle: Bool, articleWindowScrollY: Int) -> Bool {
guard let feedNode = nodeFor(sidebarItemID: sidebarItemID), let feedIndexPath = indexPathFor(feedNode) else { return false }
selectFeed(indexPath: feedIndexPath) {
self.selectArticleInCurrentFeed(articleID, isShowingExtractedArticle: isShowingExtractedArticle, articleWindowScrollY: articleWindowScrollY)