From 1cd21892c12dea44e50ae456cf91569031a0899b Mon Sep 17 00:00:00 2001 From: Nate Weaver Date: Sun, 25 Sep 2022 15:27:06 -0500 Subject: [PATCH] Support copying multiple article URLs Requires and RSCore update. --- ...melineViewController+ContextualMenus.swift | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/Mac/MainWindow/Timeline/TimelineViewController+ContextualMenus.swift b/Mac/MainWindow/Timeline/TimelineViewController+ContextualMenus.swift index 4a50eadf7..f15320591 100644 --- a/Mac/MainWindow/Timeline/TimelineViewController+ContextualMenus.swift +++ b/Mac/MainWindow/Timeline/TimelineViewController+ContextualMenus.swift @@ -97,10 +97,10 @@ extension TimelineViewController { } @objc func copyURLFromContextualMenu(_ sender: Any?) { - guard let menuItem = sender as? NSMenuItem, let urlString = menuItem.representedObject as? String else { + guard let menuItem = sender as? NSMenuItem, let urlStrings = menuItem.representedObject as? [String] else { return } - URLPasteboardWriter.write(urlString: urlString, to: .general) + URLPasteboardWriter.write(urlStrings: urlStrings, to: .general) } @objc func performShareServiceFromContextualMenu(_ sender: Any?) { @@ -180,10 +180,15 @@ private extension TimelineViewController { if articles.count == 1, let link = articles.first!.preferredLink { menu.addSeparatorIfNeeded() menu.addItem(openInBrowserMenuItem(link)) + } + + let links = articles.compactMap { $0.preferredLink } + + if links.count > 0 { menu.addSeparatorIfNeeded() - menu.addItem(copyArticleURLMenuItem(link)) - - if let externalLink = articles.first?.externalLink, externalLink != link { + menu.addItem(copyArticleURLsMenuItem(links)) + + if let externalLink = articles.first?.externalLink, externalLink != links.first { menu.addItem(copyExternalURLMenuItem(externalLink)) } } @@ -279,8 +284,8 @@ private extension TimelineViewController { return menuItem(NSLocalizedString("Open in Browser", comment: "Command"), #selector(openInBrowserFromContextualMenu(_:)), urlString) } - func copyArticleURLMenuItem(_ urlString: String) -> NSMenuItem { - return menuItem(NSLocalizedString("Copy Article URL", comment: "Command"), #selector(copyURLFromContextualMenu(_:)), urlString) + func copyArticleURLsMenuItem(_ urlStrings: [String]) -> NSMenuItem { + return menuItem(NSLocalizedString("Copy Article URL", comment: "Command"), #selector(copyURLFromContextualMenu(_:)), urlStrings) } func copyExternalURLMenuItem(_ urlString: String) -> NSMenuItem {