From 3128475640b52a60dbda7c98b7f119bef8259ae6 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Tue, 25 Sep 2018 22:20:59 -0500 Subject: [PATCH] Sorted articles by publishing date before sharing them. Issue #367 Also fixed issue where mail subject wasn't being set when sharing via the context share menu. --- NetNewsWire/MainWindow/MainWindowController.swift | 3 ++- .../Timeline/TimelineViewController+ContextualMenus.swift | 4 +++- .../MainWindow/Timeline/TimelineViewController.swift | 6 ++++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/NetNewsWire/MainWindow/MainWindowController.swift b/NetNewsWire/MainWindow/MainWindowController.swift index 6a3753347..f9a5a13be 100644 --- a/NetNewsWire/MainWindow/MainWindowController.swift +++ b/NetNewsWire/MainWindow/MainWindowController.swift @@ -363,7 +363,8 @@ class MainWindowController : NSWindowController, NSUserInterfaceValidations { return } - let items = selectedArticles.map { ArticlePasteboardWriter(article: $0) } + let sortedArticles = selectedArticles.sortedByDate(.orderedAscending) + let items = sortedArticles.map { ArticlePasteboardWriter(article: $0) } let sharingServicePicker = NSSharingServicePicker(items: items) sharingServicePicker.delegate = sharingServicePickerDelegate sharingServicePicker.show(relativeTo: view.bounds, of: view, preferredEdge: .minY) diff --git a/NetNewsWire/MainWindow/Timeline/TimelineViewController+ContextualMenus.swift b/NetNewsWire/MainWindow/Timeline/TimelineViewController+ContextualMenus.swift index d1c3b98b9..2394c5f4b 100644 --- a/NetNewsWire/MainWindow/Timeline/TimelineViewController+ContextualMenus.swift +++ b/NetNewsWire/MainWindow/Timeline/TimelineViewController+ContextualMenus.swift @@ -166,7 +166,8 @@ private extension TimelineViewController { return nil } - let items = articles.map { ArticlePasteboardWriter(article: $0) } + let sortedArticles = selectedArticles.sortedByDate(.orderedAscending) + let items = sortedArticles.map { ArticlePasteboardWriter(article: $0) } let standardServices = NSSharingService.sharingServices(forItems: items) let customServices = SharingServicePickerDelegate.customSharingServices(for: items) let services = standardServices + customServices @@ -176,6 +177,7 @@ private extension TimelineViewController { let menu = NSMenu(title: NSLocalizedString("Share", comment: "Share menu name")) services.forEach { (service) in + service.delegate = sharingServiceDelegate let menuItem = NSMenuItem(title: service.menuItemTitle, action: #selector(performShareServiceFromContextualMenu(_:)), keyEquivalent: "") menuItem.image = service.image let sharingCommandInfo = SharingCommandInfo(service: service, items: items) diff --git a/NetNewsWire/MainWindow/Timeline/TimelineViewController.swift b/NetNewsWire/MainWindow/Timeline/TimelineViewController.swift index 97e7ca65d..5e190ac48 100644 --- a/NetNewsWire/MainWindow/Timeline/TimelineViewController.swift +++ b/NetNewsWire/MainWindow/Timeline/TimelineViewController.swift @@ -17,6 +17,8 @@ class TimelineViewController: NSViewController, UndoableCommandRunner { @IBOutlet var contextualMenuDelegate: TimelineContextualMenuDelegate? @IBOutlet var dataSource: TimelineDataSource! + var sharingServiceDelegate: NSSharingServiceDelegate? + var selectedArticles: [Article] { return Array(articles.articlesForIndexes(tableView.selectedRowIndexes)) } @@ -128,6 +130,10 @@ class TimelineViewController: NSViewController, UndoableCommandRunner { didRegisterForNotifications = true } } + + override func viewDidAppear() { + sharingServiceDelegate = SharingServiceDelegate(self.view.window) + } // MARK: Appearance Change