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 {
|
for i in 0..<readArticlesFilterStateKeys.count {
|
||||||
if let feedIdentifier = SidebarItemIdentifier(userInfo: readArticlesFilterStateKeys[i]) {
|
if let sidebarItemID = SidebarItemIdentifier(userInfo: readArticlesFilterStateKeys[i]) {
|
||||||
readFilterEnabledTable[feedIdentifier] = readArticlesFilterStateValues[i]
|
readFilterEnabledTable[sidebarItemID] = readArticlesFilterStateValues[i]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,11 +20,11 @@ class IconImageCache {
|
|||||||
private var smallIconImageCache = [SidebarItemIdentifier: IconImage]()
|
private var smallIconImageCache = [SidebarItemIdentifier: IconImage]()
|
||||||
private var authorIconImageCache = [Author: IconImage]()
|
private var authorIconImageCache = [Author: IconImage]()
|
||||||
|
|
||||||
func imageFor(_ feedID: SidebarItemIdentifier) -> IconImage? {
|
func imageFor(_ sidebarItemID: SidebarItemIdentifier) -> IconImage? {
|
||||||
if let smartFeed = SmartFeedsController.shared.find(by: feedID) {
|
if let smartFeed = SmartFeedsController.shared.find(by: sidebarItemID) {
|
||||||
return imageForFeed(smartFeed)
|
return imageForFeed(smartFeed)
|
||||||
}
|
}
|
||||||
if let feed = AccountManager.shared.existingSidebarItem(with: feedID) {
|
if let feed = AccountManager.shared.existingSidebarItem(with: sidebarItemID) {
|
||||||
return imageForFeed(feed)
|
return imageForFeed(feed)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
@ -69,41 +69,41 @@ class IconImageCache {
|
|||||||
|
|
||||||
private extension IconImageCache {
|
private extension IconImageCache {
|
||||||
|
|
||||||
func imageForSmartFeed(_ smartFeed: PseudoFeed, _ feedID: SidebarItemIdentifier) -> IconImage? {
|
func imageForSmartFeed(_ smartFeed: PseudoFeed, _ sidebarItemID: SidebarItemIdentifier) -> IconImage? {
|
||||||
if let iconImage = smartFeedIconImageCache[feedID] {
|
if let iconImage = smartFeedIconImageCache[sidebarItemID] {
|
||||||
return iconImage
|
return iconImage
|
||||||
}
|
}
|
||||||
if let iconImage = smartFeed.smallIcon {
|
if let iconImage = smartFeed.smallIcon {
|
||||||
smartFeedIconImageCache[feedID] = iconImage
|
smartFeedIconImageCache[sidebarItemID] = iconImage
|
||||||
return iconImage
|
return iconImage
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func imageForFeed(_ feed: Feed, _ feedID: SidebarItemIdentifier) -> IconImage? {
|
func imageForFeed(_ feed: Feed, _ sidebarItemID: SidebarItemIdentifier) -> IconImage? {
|
||||||
if let iconImage = feedIconImageCache[feedID] {
|
if let iconImage = feedIconImageCache[sidebarItemID] {
|
||||||
return iconImage
|
return iconImage
|
||||||
}
|
}
|
||||||
if let iconImage = appDelegate.feedIconDownloader.icon(for: feed) {
|
if let iconImage = appDelegate.feedIconDownloader.icon(for: feed) {
|
||||||
feedIconImageCache[feedID] = iconImage
|
feedIconImageCache[sidebarItemID] = iconImage
|
||||||
return iconImage
|
return iconImage
|
||||||
}
|
}
|
||||||
if let faviconImage = faviconImageCache[feedID] {
|
if let faviconImage = faviconImageCache[sidebarItemID] {
|
||||||
return faviconImage
|
return faviconImage
|
||||||
}
|
}
|
||||||
if let faviconImage = appDelegate.faviconDownloader.faviconAsIcon(for: feed) {
|
if let faviconImage = appDelegate.faviconDownloader.faviconAsIcon(for: feed) {
|
||||||
faviconImageCache[feedID] = faviconImage
|
faviconImageCache[sidebarItemID] = faviconImage
|
||||||
return faviconImage
|
return faviconImage
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func imageForSmallIconProvider(_ provider: SmallIconProvider, _ feedID: SidebarItemIdentifier) -> IconImage? {
|
func imageForSmallIconProvider(_ provider: SmallIconProvider, _ sidebarItemID: SidebarItemIdentifier) -> IconImage? {
|
||||||
if let iconImage = smallIconImageCache[feedID] {
|
if let iconImage = smallIconImageCache[sidebarItemID] {
|
||||||
return iconImage
|
return iconImage
|
||||||
}
|
}
|
||||||
if let iconImage = provider.smallIcon {
|
if let iconImage = provider.smallIcon {
|
||||||
smallIconImageCache[feedID] = iconImage
|
smallIconImageCache[sidebarItemID] = iconImage
|
||||||
return iconImage
|
return iconImage
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
@ -16,8 +16,8 @@ final class FeedTreeControllerDelegate: TreeControllerDelegate {
|
|||||||
private var filterExceptions = Set<SidebarItemIdentifier>()
|
private var filterExceptions = Set<SidebarItemIdentifier>()
|
||||||
var isReadFiltered = false
|
var isReadFiltered = false
|
||||||
|
|
||||||
func addFilterException(_ feedID: SidebarItemIdentifier) {
|
func addFilterException(_ sidebarItemID: SidebarItemIdentifier) {
|
||||||
filterExceptions.insert(feedID)
|
filterExceptions.insert(sidebarItemID)
|
||||||
}
|
}
|
||||||
|
|
||||||
func resetFilterExceptions() {
|
func resetFilterExceptions() {
|
||||||
|
@ -33,15 +33,15 @@ enum ShowFeedName {
|
|||||||
|
|
||||||
struct FeedNode: Hashable {
|
struct FeedNode: Hashable {
|
||||||
var node: Node
|
var node: Node
|
||||||
var feedID: SidebarItemIdentifier
|
var sidebarItemID: SidebarItemIdentifier
|
||||||
|
|
||||||
init(_ node: Node) {
|
init(_ node: Node) {
|
||||||
self.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) {
|
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] {
|
if let readArticlesFilterState = windowState[UserInfoKey.readArticlesFilterState] as? [[AnyHashable: AnyHashable]: Bool] {
|
||||||
for key in readArticlesFilterState.keys {
|
for key in readArticlesFilterState.keys {
|
||||||
if let feedIdentifier = SidebarItemIdentifier(userInfo: key) {
|
if let sidebarItemID = SidebarItemIdentifier(userInfo: key) {
|
||||||
readFilterEnabledTable[feedIdentifier] = readArticlesFilterState[key]
|
readFilterEnabledTable[sidebarItemID] = readArticlesFilterState[key]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2209,16 +2209,16 @@ private extension SceneCoordinator {
|
|||||||
func handleSelectFeed(_ userInfo: [AnyHashable : Any]?) {
|
func handleSelectFeed(_ userInfo: [AnyHashable : Any]?) {
|
||||||
guard let userInfo = userInfo,
|
guard let userInfo = userInfo,
|
||||||
let feedIdentifierUserInfo = userInfo[UserInfoKey.feedIdentifier] as? [AnyHashable : AnyHashable],
|
let feedIdentifierUserInfo = userInfo[UserInfoKey.feedIdentifier] as? [AnyHashable : AnyHashable],
|
||||||
let feedIdentifier = SidebarItemIdentifier(userInfo: feedIdentifierUserInfo) else {
|
let sidebarItemID = SidebarItemIdentifier(userInfo: feedIdentifierUserInfo) else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
treeControllerDelegate.addFilterException(feedIdentifier)
|
treeControllerDelegate.addFilterException(sidebarItemID)
|
||||||
|
|
||||||
switch feedIdentifier {
|
switch sidebarItemID {
|
||||||
|
|
||||||
case .smartFeed:
|
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)
|
markExpanded(SmartFeedsController.shared)
|
||||||
rebuildBackingStores(initialLoad: true, completion: {
|
rebuildBackingStores(initialLoad: true, completion: {
|
||||||
@ -2294,29 +2294,29 @@ private extension SceneCoordinator {
|
|||||||
|
|
||||||
func restoreFeedSelection(_ userInfo: [AnyHashable : Any], accountID: String, feedID: String, articleID: String) -> Bool {
|
func restoreFeedSelection(_ userInfo: [AnyHashable : Any], accountID: String, feedID: String, articleID: String) -> Bool {
|
||||||
guard let feedIdentifierUserInfo = userInfo[UserInfoKey.feedIdentifier] as? [AnyHashable : AnyHashable],
|
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 isShowingExtractedArticle = userInfo[UserInfoKey.isShowingExtractedArticle] as? Bool,
|
||||||
let articleWindowScrollY = userInfo[UserInfoKey.articleWindowScrollY] as? Int else {
|
let articleWindowScrollY = userInfo[UserInfoKey.articleWindowScrollY] as? Int else {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
switch feedIdentifier {
|
switch sidebarItemID {
|
||||||
|
|
||||||
case .script:
|
case .script:
|
||||||
return false
|
return false
|
||||||
|
|
||||||
case .smartFeed, .folder:
|
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 {
|
if found {
|
||||||
treeControllerDelegate.addFilterException(feedIdentifier)
|
treeControllerDelegate.addFilterException(sidebarItemID)
|
||||||
}
|
}
|
||||||
return found
|
return found
|
||||||
|
|
||||||
case .feed:
|
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 {
|
if found {
|
||||||
treeControllerDelegate.addFilterException(feedIdentifier)
|
treeControllerDelegate.addFilterException(sidebarItemID)
|
||||||
if let feedNode = nodeFor(sidebarItemID: feedIdentifier), let folder = feedNode.parent?.representedObject as? Folder, let folderFeedID = folder.sidebarItemID {
|
if let feedNode = nodeFor(sidebarItemID: sidebarItemID), let folder = feedNode.parent?.representedObject as? Folder, let folderFeedID = folder.sidebarItemID {
|
||||||
treeControllerDelegate.addFilterException(folderFeedID)
|
treeControllerDelegate.addFilterException(folderFeedID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2352,8 +2352,8 @@ private extension SceneCoordinator {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func selectFeedAndArticle(feedIdentifier: SidebarItemIdentifier, articleID: String, isShowingExtractedArticle: Bool, articleWindowScrollY: Int) -> Bool {
|
func selectFeedAndArticle(sidebarItemID: SidebarItemIdentifier, articleID: String, isShowingExtractedArticle: Bool, articleWindowScrollY: Int) -> Bool {
|
||||||
guard let feedNode = nodeFor(sidebarItemID: feedIdentifier), let feedIndexPath = indexPathFor(feedNode) else { return false }
|
guard let feedNode = nodeFor(sidebarItemID: sidebarItemID), let feedIndexPath = indexPathFor(feedNode) else { return false }
|
||||||
|
|
||||||
selectFeed(indexPath: feedIndexPath) {
|
selectFeed(indexPath: feedIndexPath) {
|
||||||
self.selectArticleInCurrentFeed(articleID, isShowingExtractedArticle: isShowingExtractedArticle, articleWindowScrollY: articleWindowScrollY)
|
self.selectArticleInCurrentFeed(articleID, isShowingExtractedArticle: isShowingExtractedArticle, articleWindowScrollY: articleWindowScrollY)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user