Use sidebarItemID in place of feedID or feedIdentifier when the type is SidebarItemID.
This commit is contained in:
parent
f03356151e
commit
0929aedd46
@ -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]
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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() {
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user