From d641223536a8a2e9bc4d062da7909baa631c4eab Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Tue, 27 Aug 2019 14:20:34 -0500 Subject: [PATCH] Add Activities for viewing Feeds and Folders --- Shared/Activity/ActivityManager.swift | 24 ++++++++++++++++++++---- Shared/Activity/ActivityType.swift | 2 ++ iOS/AppCoordinator.swift | 8 ++++++++ iOS/Resources/Info.plist | 2 ++ 4 files changed, 32 insertions(+), 4 deletions(-) diff --git a/Shared/Activity/ActivityManager.swift b/Shared/Activity/ActivityManager.swift index f5a6c7f4b..465eab933 100644 --- a/Shared/Activity/ActivityManager.swift +++ b/Shared/Activity/ActivityManager.swift @@ -9,6 +9,7 @@ import Foundation import CoreSpotlight import CoreServices +import Account import Articles import Intents @@ -21,19 +22,34 @@ class ActivityManager { func selectingToday() { let title = NSLocalizedString("See articles for Today", comment: "Today") - selectingActivity = makeSmartFeedActivity(type: ActivityType.selectToday, title: title, identifier: "smartfeed.today") + selectingActivity = makeSelectingActivity(type: ActivityType.selectToday, title: title, identifier: "smartfeed.today") selectingActivity!.becomeCurrent() } func selectingAllUnread() { let title = NSLocalizedString("See articles in All Unread", comment: "All Unread") - selectingActivity = makeSmartFeedActivity(type: ActivityType.selectAllUnread, title: title, identifier: "smartfeed.allUnread") + selectingActivity = makeSelectingActivity(type: ActivityType.selectAllUnread, title: title, identifier: "smartfeed.allUnread") selectingActivity!.becomeCurrent() } func selectingStarred() { let title = NSLocalizedString("See articles in Starred", comment: "Starred") - selectingActivity = makeSmartFeedActivity(type: ActivityType.selectStarred, title: title, identifier: "smartfeed.starred") + selectingActivity = makeSelectingActivity(type: ActivityType.selectStarred, title: title, identifier: "smartfeed.starred") + selectingActivity!.becomeCurrent() + } + + func selectingFolder(_ folder: Folder) { + let localizedText = NSLocalizedString("See articles in “%@”", comment: "See articles in Folder") + let title = NSString.localizedStringWithFormat(localizedText as NSString, folder.nameForDisplay) as String + selectingActivity = makeSelectingActivity(type: ActivityType.selectFolder, title: title, identifier: "folder.\(folder.nameForDisplay)") + selectingActivity!.becomeCurrent() + + } + + func selectingFeed(_ feed: Feed) { + let localizedText = NSLocalizedString("See articles in “%@”", comment: "See articles in Feed") + let title = NSString.localizedStringWithFormat(localizedText as NSString, feed.nameForDisplay) as String + selectingActivity = makeSelectingActivity(type: ActivityType.selectFeed, title: title, identifier: feed.url) selectingActivity!.becomeCurrent() } @@ -51,7 +67,7 @@ class ActivityManager { private extension ActivityManager { - func makeSmartFeedActivity(type: ActivityType, title: String, identifier: String) -> NSUserActivity { + func makeSelectingActivity(type: ActivityType, title: String, identifier: String) -> NSUserActivity { let activity = NSUserActivity(activityType: type.rawValue) activity.title = title activity.suggestedInvocationPhrase = title diff --git a/Shared/Activity/ActivityType.swift b/Shared/Activity/ActivityType.swift index 3e2874441..84f5e603d 100644 --- a/Shared/Activity/ActivityType.swift +++ b/Shared/Activity/ActivityType.swift @@ -12,5 +12,7 @@ enum ActivityType: String { case selectToday = "com.ranchero.NetNewsWire.SelectToday" case selectAllUnread = "com.ranchero.NetNewsWire.SelectAllUnread" case selectStarred = "com.ranchero.NetNewsWire.SelectStarred" + case selectFolder = "com.ranchero.NetNewsWire.SelectFolder" + case selectFeed = "com.ranchero.NetNewsWire.SelectFeed" case readArticle = "com.ranchero.NetNewsWire.ReadArticle" } diff --git a/iOS/AppCoordinator.swift b/iOS/AppCoordinator.swift index 323e8f30b..ff64dabff 100644 --- a/iOS/AppCoordinator.swift +++ b/iOS/AppCoordinator.swift @@ -253,6 +253,10 @@ class AppCoordinator: NSObject, UndoableCommandRunner, UnreadCountProvider { handleSelectAllUnread() case .selectStarred: handleSelectStarred() + case .selectFolder: + print("folder selected") + case .selectFeed: + print("feed selected") case .readArticle: handleReadArticle(activity) } @@ -1193,6 +1197,10 @@ private extension AppCoordinator { ActivityManager.shared.selectingAllUnread() case node.representedObject === SmartFeedsController.shared.starredFeed: ActivityManager.shared.selectingStarred() + case node.representedObject is Folder: + ActivityManager.shared.selectingFolder(node.representedObject as! Folder) + case node.representedObject is Feed: + ActivityManager.shared.selectingFeed(node.representedObject as! Feed) default: break } diff --git a/iOS/Resources/Info.plist b/iOS/Resources/Info.plist index 1594130c6..c65ac8b4f 100644 --- a/iOS/Resources/Info.plist +++ b/iOS/Resources/Info.plist @@ -49,6 +49,8 @@ NSUserActivityTypes + com.ranchero.NetNewsWire.SelectFeed + com.ranchero.NetNewsWire.SelectFolder com.ranchero.NetNewsWire.SelectAllUnread com.ranchero.NetNewsWire.SelectStarred com.ranchero.NetNewsWire.SelectToday