Continue renaming webFeed to feed.

This commit is contained in:
Brent Simmons
2024-11-01 21:58:47 -07:00
parent acabaf8f94
commit fac4eded60
32 changed files with 151 additions and 151 deletions

View File

@@ -64,7 +64,7 @@ class AddWebFeedWindowController : NSWindowController, AddFeedWindowController {
if let account = initialAccount {
FolderTreeMenu.select(account: account, folder: initialFolder, in: folderPopupButton)
} else if let container = AddWebFeedDefaultContainer.defaultContainer {
} else if let container = AddFeedDefaultContainer.defaultContainer {
if let folder = container as? Folder, let account = folder.account {
FolderTreeMenu.select(account: account, folder: folder, in: folderPopupButton)
} else {
@@ -97,7 +97,7 @@ class AddWebFeedWindowController : NSWindowController, AddFeedWindowController {
}
guard let container = selectedContainer() else { return }
AddWebFeedDefaultContainer.saveDefaultContainer(container)
AddFeedDefaultContainer.saveDefaultContainer(container)
delegate?.addFeedWindowController(self, userEnteredURL: url, userEnteredTitle: userEnteredTitle, container: container)

View File

@@ -616,7 +616,7 @@ extension MainWindowController: TimelineContainerViewControllerDelegate {
if let articles = articles {
if articles.count == 1 {
activityManager.reading(feed: nil, article: articles.first)
if articles.first?.webFeed?.isArticleExtractorAlwaysOn ?? false {
if articles.first?.feed?.isArticleExtractorAlwaysOn ?? false {
detailState = .loading
startArticleExtractorForCurrentLink()
} else {
@@ -633,8 +633,8 @@ extension MainWindowController: TimelineContainerViewControllerDelegate {
detailViewController?.setState(detailState, mode: mode)
}
func timelineRequestedWebFeedSelection(_: TimelineContainerViewController, webFeed: Feed) {
sidebarViewController?.selectFeed(webFeed)
func timelineRequestedFeedSelection(_: TimelineContainerViewController, feed: Feed) {
sidebarViewController?.selectFeed(feed)
}
func timelineInvalidatedRestorationState(_: TimelineContainerViewController) {
@@ -1144,7 +1144,7 @@ private extension MainWindowController {
return currentLink != nil
}
if currentTimelineViewController?.selectedArticles.first?.webFeed != nil {
if currentTimelineViewController?.selectedArticles.first?.feed != nil {
toolbarButton.isEnabled = true
}
@@ -1171,7 +1171,7 @@ private extension MainWindowController {
return currentLink != nil
}
if currentTimelineViewController?.selectedArticles.first?.webFeed != nil {
if currentTimelineViewController?.selectedArticles.first?.feed != nil {
toolbarButton.isEnabled = true
}
@@ -1426,10 +1426,10 @@ private extension MainWindowController {
func buildNewSidebarItemMenu() -> NSMenu {
let menu = NSMenu()
let newWebFeedItem = NSMenuItem()
newWebFeedItem.title = NSLocalizedString("New Feed…", comment: "New Feed")
newWebFeedItem.action = Selector(("showAddFeedWindow:"))
menu.addItem(newWebFeedItem)
let newFeedItem = NSMenuItem()
newFeedItem.title = NSLocalizedString("New Feed…", comment: "New Feed")
newFeedItem.action = Selector(("showAddFeedWindow:"))
menu.addItem(newFeedItem)
let newFolderFeedItem = NSMenuItem()
newFolderFeedItem.title = NSLocalizedString("New Folder…", comment: "New Folder")

View File

@@ -11,9 +11,9 @@ import Articles
import Account
import RSCore
typealias PasteboardWebFeedDictionary = [String: String]
typealias PasteboardFeedDictionary = [String: String]
struct PasteboardWebFeed: Hashable {
struct PasteboardFeed: Hashable {
private struct Key {
static let url = "URL"
@@ -23,12 +23,12 @@ struct PasteboardWebFeed: Hashable {
// Internal
static let accountID = "accountID"
static let accountType = "accountType"
static let webFeedID = "webFeedID"
static let feedID = "feedID"
static let editedName = "editedName"
}
let url: String
let webFeedID: String?
let feedID: String?
let homePageURL: String?
let name: String?
let editedName: String?
@@ -36,9 +36,9 @@ struct PasteboardWebFeed: Hashable {
let accountType: AccountType?
let isLocalFeed: Bool
init(url: String, webFeedID: String?, homePageURL: String?, name: String?, editedName: String?, accountID: String?, accountType: AccountType?) {
init(url: String, feedID: String?, homePageURL: String?, name: String?, editedName: String?, accountID: String?, accountType: AccountType?) {
self.url = url.normalizedURL
self.webFeedID = webFeedID
self.feedID = feedID
self.homePageURL = homePageURL?.normalizedURL
self.name = name
self.editedName = editedName
@@ -49,7 +49,7 @@ struct PasteboardWebFeed: Hashable {
// MARK: - Reading
init?(dictionary: PasteboardWebFeedDictionary) {
init?(dictionary: PasteboardFeedDictionary) {
guard let url = dictionary[Key.url] else {
return nil
}
@@ -57,7 +57,7 @@ struct PasteboardWebFeed: Hashable {
let homePageURL = dictionary[Key.homePageURL]
let name = dictionary[Key.name]
let accountID = dictionary[Key.accountID]
let webFeedID = dictionary[Key.webFeedID]
let feedID = dictionary[Key.feedID]
let editedName = dictionary[Key.editedName]
var accountType: AccountType? = nil
@@ -65,7 +65,7 @@ struct PasteboardWebFeed: Hashable {
accountType = AccountType(rawValue: accountTypeInt)
}
self.init(url: url, webFeedID: webFeedID, homePageURL: homePageURL, name: name, editedName: editedName, accountID: accountID, accountType: accountType)
self.init(url: url, feedID: feedID, homePageURL: homePageURL, name: name, editedName: editedName, accountID: accountID, accountType: accountType)
}
init?(pasteboardItem: NSPasteboardItem) {
@@ -77,7 +77,7 @@ struct PasteboardWebFeed: Hashable {
pasteboardType = WebFeedPasteboardWriter.webFeedUTIType
}
if let foundType = pasteboardType {
if let feedDictionary = pasteboardItem.propertyList(forType: foundType) as? PasteboardWebFeedDictionary {
if let feedDictionary = pasteboardItem.propertyList(forType: foundType) as? PasteboardFeedDictionary {
self.init(dictionary: feedDictionary)
return
}
@@ -94,7 +94,7 @@ struct PasteboardWebFeed: Hashable {
if let foundType = pasteboardType {
if let possibleURLString = pasteboardItem.string(forType: foundType) {
if possibleURLString.mayBeURL {
self.init(url: possibleURLString, webFeedID: nil, homePageURL: nil, name: nil, editedName: nil, accountID: nil, accountType: nil)
self.init(url: possibleURLString, feedID: nil, homePageURL: nil, name: nil, editedName: nil, accountID: nil, accountType: nil)
return
}
}
@@ -103,18 +103,18 @@ struct PasteboardWebFeed: Hashable {
return nil
}
static func pasteboardFeeds(with pasteboard: NSPasteboard) -> Set<PasteboardWebFeed>? {
static func pasteboardFeeds(with pasteboard: NSPasteboard) -> Set<PasteboardFeed>? {
guard let items = pasteboard.pasteboardItems else {
return nil
}
let webFeeds = items.compactMap { PasteboardWebFeed(pasteboardItem: $0) }
let webFeeds = items.compactMap { PasteboardFeed(pasteboardItem: $0) }
return webFeeds.isEmpty ? nil : Set(webFeeds)
}
// MARK: - Writing
func exportDictionary() -> PasteboardWebFeedDictionary {
var d = PasteboardWebFeedDictionary()
func exportDictionary() -> PasteboardFeedDictionary {
var d = PasteboardFeedDictionary()
d[Key.url] = url
d[Key.homePageURL] = homePageURL ?? ""
if let nameForDisplay = editedName ?? name {
@@ -123,24 +123,24 @@ struct PasteboardWebFeed: Hashable {
return d
}
func internalDictionary() -> PasteboardWebFeedDictionary {
var d = PasteboardWebFeedDictionary()
d[PasteboardWebFeed.Key.webFeedID] = webFeedID
d[PasteboardWebFeed.Key.url] = url
func internalDictionary() -> PasteboardFeedDictionary {
var d = PasteboardFeedDictionary()
d[PasteboardFeed.Key.feedID] = feedID
d[PasteboardFeed.Key.url] = url
if let homePageURL = homePageURL {
d[PasteboardWebFeed.Key.homePageURL] = homePageURL
d[PasteboardFeed.Key.homePageURL] = homePageURL
}
if let name = name {
d[PasteboardWebFeed.Key.name] = name
d[PasteboardFeed.Key.name] = name
}
if let editedName = editedName {
d[PasteboardWebFeed.Key.editedName] = editedName
d[PasteboardFeed.Key.editedName] = editedName
}
if let accountID = accountID {
d[PasteboardWebFeed.Key.accountID] = accountID
d[PasteboardFeed.Key.accountID] = accountID
}
if let accountType = accountType {
d[PasteboardWebFeed.Key.accountType] = String(accountType.rawValue)
d[PasteboardFeed.Key.accountType] = String(accountType.rawValue)
}
return d
}
@@ -196,15 +196,15 @@ extension Feed: @retroactive PasteboardWriterOwner {
private extension WebFeedPasteboardWriter {
var pasteboardFeed: PasteboardWebFeed {
return PasteboardWebFeed(url: webFeed.url, webFeedID: webFeed.webFeedID, homePageURL: webFeed.homePageURL, name: webFeed.name, editedName: webFeed.editedName, accountID: webFeed.account?.accountID, accountType: webFeed.account?.type)
var pasteboardFeed: PasteboardFeed {
return PasteboardFeed(url: webFeed.url, feedID: webFeed.webFeedID, homePageURL: webFeed.homePageURL, name: webFeed.name, editedName: webFeed.editedName, accountID: webFeed.account?.accountID, accountType: webFeed.account?.type)
}
var exportDictionary: PasteboardWebFeedDictionary {
var exportDictionary: PasteboardFeedDictionary {
return pasteboardFeed.exportDictionary()
}
var internalDictionary: PasteboardWebFeedDictionary {
var internalDictionary: PasteboardFeedDictionary {
return pasteboardFeed.internalDictionary()
}
}

View File

@@ -52,7 +52,7 @@ struct PasteboardFolder: Hashable {
}
if let foundType = pasteboardType {
if let folderDictionary = pasteboardItem.propertyList(forType: foundType) as? PasteboardWebFeedDictionary {
if let folderDictionary = pasteboardItem.propertyList(forType: foundType) as? PasteboardFeedDictionary {
self.init(dictionary: folderDictionary)
return
}
@@ -72,7 +72,7 @@ struct PasteboardFolder: Hashable {
// MARK: - Writing
func internalDictionary() -> PasteboardFolderDictionary {
var d = PasteboardWebFeedDictionary()
var d = PasteboardFeedDictionary()
d[PasteboardFolder.Key.name] = name
if let folderID = folderID {
d[PasteboardFolder.Key.folderID] = folderID
@@ -131,7 +131,7 @@ private extension FolderPasteboardWriter {
return PasteboardFolder(name: folder.name ?? "", folderID: String(folder.folderID), accountID: folder.account?.accountID)
}
var internalDictionary: PasteboardWebFeedDictionary {
var internalDictionary: PasteboardFeedDictionary {
return pasteboardFolder.internalDictionary()
}
}

View File

@@ -55,7 +55,7 @@ import Account
func outlineView(_ outlineView: NSOutlineView, validateDrop info: NSDraggingInfo, proposedItem item: Any?, proposedChildIndex index: Int) -> NSDragOperation {
let draggedFolders = PasteboardFolder.pasteboardFolders(with: info.draggingPasteboard)
let draggedFeeds = PasteboardWebFeed.pasteboardFeeds(with: info.draggingPasteboard)
let draggedFeeds = PasteboardFeed.pasteboardFeeds(with: info.draggingPasteboard)
if (draggedFolders == nil && draggedFeeds == nil) || (draggedFolders != nil && draggedFeeds != nil) {
return SidebarOutlineDataSource.dragOperationNone
}
@@ -91,7 +91,7 @@ import Account
func outlineView(_ outlineView: NSOutlineView, acceptDrop info: NSDraggingInfo, item: Any?, childIndex index: Int) -> Bool {
let draggedFolders = PasteboardFolder.pasteboardFolders(with: info.draggingPasteboard)
let draggedFeeds = PasteboardWebFeed.pasteboardFeeds(with: info.draggingPasteboard)
let draggedFeeds = PasteboardFeed.pasteboardFeeds(with: info.draggingPasteboard)
if (draggedFolders == nil && draggedFeeds == nil) || (draggedFolders != nil && draggedFeeds != nil) {
return false
}
@@ -145,7 +145,7 @@ private extension SidebarOutlineDataSource {
case empty, singleLocal, singleNonLocal, multipleLocal, multipleNonLocal, mixed
}
func draggedFeedContentsType(_ draggedFeeds: Set<PasteboardWebFeed>) -> DraggedFeedsContentsType {
func draggedFeedContentsType(_ draggedFeeds: Set<PasteboardFeed>) -> DraggedFeedsContentsType {
if draggedFeeds.isEmpty {
return .empty
}
@@ -173,14 +173,14 @@ private extension SidebarOutlineDataSource {
return .multipleNonLocal
}
func singleNonLocalFeed(from feeds: Set<PasteboardWebFeed>) -> PasteboardWebFeed? {
func singleNonLocalFeed(from feeds: Set<PasteboardFeed>) -> PasteboardFeed? {
guard feeds.count == 1, let feed = feeds.first else {
return nil
}
return feed.isLocalFeed ? nil : feed
}
func validateSingleNonLocalFeedDrop(_ outlineView: NSOutlineView, _ draggedFeed: PasteboardWebFeed, _ parentNode: Node, _ index: Int) -> NSDragOperation {
func validateSingleNonLocalFeedDrop(_ outlineView: NSOutlineView, _ draggedFeed: PasteboardFeed, _ parentNode: Node, _ index: Int) -> NSDragOperation {
// A non-local feed should always drag on to an Account or Folder node, with NSOutlineViewDropOnItemIndex since we dont know where it would sort till we read the feed.
guard let dropTargetNode = ancestorThatCanAcceptNonLocalFeed(parentNode) else {
return SidebarOutlineDataSource.dragOperationNone
@@ -191,7 +191,7 @@ private extension SidebarOutlineDataSource {
return .copy
}
func validateSingleLocalFeedDrop(_ outlineView: NSOutlineView, _ draggedFeed: PasteboardWebFeed, _ parentNode: Node, _ index: Int) -> NSDragOperation {
func validateSingleLocalFeedDrop(_ outlineView: NSOutlineView, _ draggedFeed: PasteboardFeed, _ parentNode: Node, _ index: Int) -> NSDragOperation {
// A local feed should always drag on to an Account or Folder node, and we can provide an index.
guard let dropTargetNode = ancestorThatCanAcceptLocalFeed(parentNode) else {
return SidebarOutlineDataSource.dragOperationNone
@@ -212,7 +212,7 @@ private extension SidebarOutlineDataSource {
return localDragOperation(parentNode: parentNode)
}
func validateLocalFeedsDrop(_ outlineView: NSOutlineView, _ draggedFeeds: Set<PasteboardWebFeed>, _ parentNode: Node, _ index: Int) -> NSDragOperation {
func validateLocalFeedsDrop(_ outlineView: NSOutlineView, _ draggedFeeds: Set<PasteboardFeed>, _ parentNode: Node, _ index: Int) -> NSDragOperation {
// Local feeds should always drag on to an Account or Folder node, and index should be NSOutlineViewDropOnItemIndex since we cant provide multiple indexes.
guard let dropTargetNode = ancestorThatCanAcceptLocalFeed(parentNode) else {
return SidebarOutlineDataSource.dragOperationNone
@@ -370,7 +370,7 @@ private extension SidebarOutlineDataSource {
}
}
func acceptLocalFeedsDrop(_ outlineView: NSOutlineView, _ draggedFeeds: Set<PasteboardWebFeed>, _ parentNode: Node, _ index: Int) -> Bool {
func acceptLocalFeedsDrop(_ outlineView: NSOutlineView, _ draggedFeeds: Set<PasteboardFeed>, _ parentNode: Node, _ index: Int) -> Bool {
guard let draggedNodes = draggedNodes else {
return false
}
@@ -473,7 +473,7 @@ private extension SidebarOutlineDataSource {
return true
}
func acceptSingleNonLocalFeedDrop(_ outlineView: NSOutlineView, _ draggedFeed: PasteboardWebFeed, _ parentNode: Node, _ index: Int) -> Bool {
func acceptSingleNonLocalFeedDrop(_ outlineView: NSOutlineView, _ draggedFeed: PasteboardFeed, _ parentNode: Node, _ index: Int) -> Bool {
guard nodeIsDropTarget(parentNode), index == NSOutlineViewDropOnItemIndex else {
return false
}
@@ -490,11 +490,11 @@ private extension SidebarOutlineDataSource {
return true
}
func nodeHasChildRepresentingDraggedFeed(_ parentNode: Node, _ draggedFeed: PasteboardWebFeed) -> Bool {
func nodeHasChildRepresentingDraggedFeed(_ parentNode: Node, _ draggedFeed: PasteboardFeed) -> Bool {
return nodeHasChildRepresentingAnyDraggedFeed(parentNode, Set([draggedFeed]))
}
func nodeRepresentsAnyDraggedFeed(_ node: Node, _ draggedFeeds: Set<PasteboardWebFeed>) -> Bool {
func nodeRepresentsAnyDraggedFeed(_ node: Node, _ draggedFeeds: Set<PasteboardFeed>) -> Bool {
guard let feed = node.representedObject as? Feed else {
return false
}
@@ -532,7 +532,7 @@ private extension SidebarOutlineDataSource {
return nodeAccount(node)?.accountID
}
func nodeHasChildRepresentingAnyDraggedFeed(_ parentNode: Node, _ draggedFeeds: Set<PasteboardWebFeed>) -> Bool {
func nodeHasChildRepresentingAnyDraggedFeed(_ parentNode: Node, _ draggedFeeds: Set<PasteboardFeed>) -> Bool {
for node in parentNode.childNodes {
if nodeRepresentsAnyDraggedFeed(node, draggedFeeds) {
return true
@@ -541,11 +541,11 @@ private extension SidebarOutlineDataSource {
return false
}
func violatesAccountSpecificBehavior(_ dropTargetNode: Node, _ draggedFeed: PasteboardWebFeed) -> Bool {
func violatesAccountSpecificBehavior(_ dropTargetNode: Node, _ draggedFeed: PasteboardFeed) -> Bool {
return violatesAccountSpecificBehavior(dropTargetNode, Set([draggedFeed]))
}
func violatesAccountSpecificBehavior(_ dropTargetNode: Node, _ draggedFeeds: Set<PasteboardWebFeed>) -> Bool {
func violatesAccountSpecificBehavior(_ dropTargetNode: Node, _ draggedFeeds: Set<PasteboardFeed>) -> Bool {
if violatesDisallowFeedInRootFolder(dropTargetNode) {
return true
}
@@ -573,7 +573,7 @@ private extension SidebarOutlineDataSource {
return false
}
func violatesDisallowFeedCopyInRootFolder(_ dropTargetNode: Node, _ draggedFeeds: Set<PasteboardWebFeed>) -> Bool {
func violatesDisallowFeedCopyInRootFolder(_ dropTargetNode: Node, _ draggedFeeds: Set<PasteboardFeed>) -> Bool {
guard let dropTargetAccount = nodeAccount(dropTargetNode), dropTargetAccount.behaviors.contains(.disallowFeedCopyInRootFolder) else {
return false
}
@@ -591,7 +591,7 @@ private extension SidebarOutlineDataSource {
return false
}
func violatesDisallowFeedInMultipleFolders(_ dropTargetNode: Node, _ draggedFeeds: Set<PasteboardWebFeed>) -> Bool {
func violatesDisallowFeedInMultipleFolders(_ dropTargetNode: Node, _ draggedFeeds: Set<PasteboardFeed>) -> Bool {
guard let dropTargetAccount = nodeAccount(dropTargetNode), dropTargetAccount.behaviors.contains(.disallowFeedInMultipleFolders) else {
return false
}
@@ -611,7 +611,7 @@ private extension SidebarOutlineDataSource {
return false
}
func indexWhereDraggedFeedWouldAppear(_ parentNode: Node, _ draggedFeed: PasteboardWebFeed) -> Int {
func indexWhereDraggedFeedWouldAppear(_ parentNode: Node, _ draggedFeed: PasteboardFeed) -> Int {
let draggedFeedWrapper = PasteboardFeedObjectWrapper(pasteboardFeed: draggedFeed)
let draggedFeedNode = Node(representedObject: draggedFeedWrapper, parent: nil)
let nodes = parentNode.childNodes + [draggedFeedNode]
@@ -640,9 +640,9 @@ final class PasteboardFeedObjectWrapper: DisplayNameProvider {
var nameForDisplay: String {
return pasteboardFeed.editedName ?? pasteboardFeed.name ?? ""
}
let pasteboardFeed: PasteboardWebFeed
let pasteboardFeed: PasteboardFeed
init(pasteboardFeed: PasteboardWebFeed) {
init(pasteboardFeed: PasteboardFeed) {
self.pasteboardFeed = pasteboardFeed
}
}

View File

@@ -76,7 +76,7 @@ protocol SidebarDelegate: AnyObject {
NotificationCenter.default.addObserver(self, selector: #selector(batchUpdateDidPerform(_:)), name: .BatchUpdateDidPerform, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(faviconDidBecomeAvailable(_:)), name: .FaviconDidBecomeAvailable, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(webFeedIconDidBecomeAvailable(_:)), name: .FeedIconDidBecomeAvailable, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(webFeedSettingDidChange(_:)), name: .WebFeedSettingDidChange, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(webFeedSettingDidChange(_:)), name: .FeedSettingDidChange, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(displayNameDidChange(_:)), name: .DisplayNameDidChange, object: nil)
DistributedNotificationCenter.default().addObserver(self, selector: #selector(appleSideBarDefaultIconSizeChanged(_:)), name: .appleSideBarDefaultIconSizeChanged, object: nil)
@@ -199,10 +199,10 @@ protocol SidebarDelegate: AnyObject {
}
@objc func webFeedSettingDidChange(_ note: Notification) {
guard let webFeed = note.object as? Feed, let key = note.userInfo?[Feed.WebFeedSettingUserInfoKey] as? String else {
guard let webFeed = note.object as? Feed, let key = note.userInfo?[Feed.FeedSettingUserInfoKey] as? String else {
return
}
if key == Feed.WebFeedSettingKey.homePageURL || key == Feed.WebFeedSettingKey.faviconURL {
if key == Feed.FeedSettingKey.homePageURL || key == Feed.FeedSettingKey.faviconURL {
configureCellsForRepresentedObject(webFeed)
}
}

View File

@@ -96,7 +96,7 @@ private extension ArticlePasteboardWriter {
s += "Date: \(article.logicalDatePublished)\n\n"
if let feed = article.webFeed {
if let feed = article.feed {
s += "Feed: \(feed.nameForDisplay)\n"
if let homePageURL = feed.homePageURL {
s += "Home page: \(homePageURL)\n"
@@ -143,7 +143,7 @@ private extension ArticlePasteboardWriter {
d[Key.articleID] = article.articleID
d[Key.uniqueID] = article.uniqueID
if let feed = article.webFeed {
if let feed = article.feed {
d[Key.feedURL] = feed.url
}

View File

@@ -12,7 +12,7 @@ import Articles
protocol TimelineContainerViewControllerDelegate: AnyObject {
func timelineSelectionDidChange(_: TimelineContainerViewController, articles: [Article]?, mode: TimelineSourceMode)
func timelineRequestedWebFeedSelection(_: TimelineContainerViewController, webFeed: Feed)
func timelineRequestedFeedSelection(_: TimelineContainerViewController, feed: Feed)
func timelineInvalidatedRestorationState(_: TimelineContainerViewController)
}
@@ -142,7 +142,7 @@ extension TimelineContainerViewController: TimelineDelegate {
}
func timelineRequestedWebFeedSelection(_: TimelineViewController, webFeed: Feed) {
delegate?.timelineRequestedWebFeedSelection(self, webFeed: webFeed)
delegate?.timelineRequestedFeedSelection(self, feed: webFeed)
}
func timelineInvalidatedRestorationState(_: TimelineViewController) {

View File

@@ -163,7 +163,7 @@ private extension TimelineViewController {
menu.addSeparatorIfNeeded()
if articles.count == 1, let feed = articles.first!.webFeed {
if articles.count == 1, let feed = articles.first!.feed {
if !(representedObjects?.contains(where: { $0 as? Feed == feed }) ?? false) {
menu.addItem(selectFeedInSidebarMenuItem(feed))
}

View File

@@ -601,7 +601,7 @@ final class TimelineViewController: NSViewController, UndoableCommandRunner, Unr
guard let article = articles.articleAtRow(row) else {
return false
}
return feed == article.webFeed
return feed == article.feed
}
if let indexesToReload = indexesToReload {
reloadCells(for: indexesToReload)
@@ -879,7 +879,7 @@ extension TimelineViewController: NSTableViewDelegate {
private func configureTimelineCell(_ cell: TimelineTableCellView, article: Article) {
cell.objectValue = article
let iconImage = article.iconImage()
cell.cellData = TimelineCellData(article: article, showFeedName: showFeedNames, feedName: article.webFeed?.nameForDisplay, byline: article.byline(), iconImage: iconImage, showIcon: showIcons, featuredImage: nil)
cell.cellData = TimelineCellData(article: article, showFeedName: showFeedNames, feedName: article.feed?.nameForDisplay, byline: article.byline(), iconImage: iconImage, showIcon: showIcons, featuredImage: nil)
}
private func iconFor(_ article: Article) -> IconImage? {