diff --git a/Evergreen/MainWindow/Sidebar/SidebarViewController+ContextualMenus.swift b/Evergreen/MainWindow/Sidebar/SidebarViewController+ContextualMenus.swift index 8f91fcfa4..7c381b812 100644 --- a/Evergreen/MainWindow/Sidebar/SidebarViewController+ContextualMenus.swift +++ b/Evergreen/MainWindow/Sidebar/SidebarViewController+ContextualMenus.swift @@ -55,7 +55,19 @@ extension SidebarViewController { @objc func markObjectsReadFromContextualMenu(_ sender: Any?) { + guard let menuItem = sender as? NSMenuItem, let objects = menuItem.representedObject as? [Any] else { + return + } + + let articles = unreadArticles(for: objects) + if articles.isEmpty { + return + } + guard let undoManager = undoManager, let markReadCommand = MarkReadOrUnreadCommand(initialArticles: Array(articles), markingRead: true, undoManager: undoManager) else { + return + } + runCommand(markReadCommand) } @objc func deleteFromContextualMenu(_ sender: Any?) { @@ -215,5 +227,16 @@ private extension SidebarViewController { item.target = self return item } + + func unreadArticles(for objects: [Any]) -> Set
{ + + var articles = Set
() + for object in objects { + if let articleFetcher = object as? ArticleFetcher { + articles.formUnion(articleFetcher.fetchUnreadArticles()) + } + } + return articles + } }