Merge branch 'master' of https://github.com/brentsimmons/NetNewsWire
This commit is contained in:
commit
e6910fcbed
@ -42,7 +42,7 @@ class ActivityManager {
|
|||||||
|
|
||||||
let title = NSLocalizedString("See articles for “Today”", comment: "Today")
|
let title = NSLocalizedString("See articles for “Today”", comment: "Today")
|
||||||
selectingActivity = makeSelectingActivity(type: ActivityType.selectToday, title: title, identifier: "smartfeed.today")
|
selectingActivity = makeSelectingActivity(type: ActivityType.selectToday, title: title, identifier: "smartfeed.today")
|
||||||
selectingActivity!.becomeCurrent()
|
donate(selectingActivity!)
|
||||||
}
|
}
|
||||||
|
|
||||||
func selectingAllUnread() {
|
func selectingAllUnread() {
|
||||||
@ -50,7 +50,7 @@ class ActivityManager {
|
|||||||
|
|
||||||
let title = NSLocalizedString("See articles in “All Unread”", comment: "All Unread")
|
let title = NSLocalizedString("See articles in “All Unread”", comment: "All Unread")
|
||||||
selectingActivity = makeSelectingActivity(type: ActivityType.selectAllUnread, title: title, identifier: "smartfeed.allUnread")
|
selectingActivity = makeSelectingActivity(type: ActivityType.selectAllUnread, title: title, identifier: "smartfeed.allUnread")
|
||||||
selectingActivity!.becomeCurrent()
|
donate(selectingActivity!)
|
||||||
}
|
}
|
||||||
|
|
||||||
func selectingStarred() {
|
func selectingStarred() {
|
||||||
@ -58,7 +58,7 @@ class ActivityManager {
|
|||||||
|
|
||||||
let title = NSLocalizedString("See articles in “Starred”", comment: "Starred")
|
let title = NSLocalizedString("See articles in “Starred”", comment: "Starred")
|
||||||
selectingActivity = makeSelectingActivity(type: ActivityType.selectStarred, title: title, identifier: "smartfeed.starred")
|
selectingActivity = makeSelectingActivity(type: ActivityType.selectStarred, title: title, identifier: "smartfeed.starred")
|
||||||
selectingActivity!.becomeCurrent()
|
donate(selectingActivity!)
|
||||||
}
|
}
|
||||||
|
|
||||||
func selectingFolder(_ folder: Folder) {
|
func selectingFolder(_ folder: Folder) {
|
||||||
@ -69,7 +69,7 @@ class ActivityManager {
|
|||||||
selectingActivity = makeSelectingActivity(type: ActivityType.selectFolder, title: title, identifier: ActivityManager.identifer(for: folder))
|
selectingActivity = makeSelectingActivity(type: ActivityType.selectFolder, title: title, identifier: ActivityManager.identifer(for: folder))
|
||||||
|
|
||||||
selectingActivity!.userInfo = folder.deepLinkUserInfo
|
selectingActivity!.userInfo = folder.deepLinkUserInfo
|
||||||
selectingActivity!.becomeCurrent()
|
donate(selectingActivity!)
|
||||||
}
|
}
|
||||||
|
|
||||||
func selectingFeed(_ feed: Feed) {
|
func selectingFeed(_ feed: Feed) {
|
||||||
@ -81,7 +81,7 @@ class ActivityManager {
|
|||||||
|
|
||||||
selectingActivity!.userInfo = feed.deepLinkUserInfo
|
selectingActivity!.userInfo = feed.deepLinkUserInfo
|
||||||
updateSelectingActivityFeedSearchAttributes(with: feed)
|
updateSelectingActivityFeedSearchAttributes(with: feed)
|
||||||
selectingActivity!.becomeCurrent()
|
donate(selectingActivity!)
|
||||||
}
|
}
|
||||||
|
|
||||||
func invalidateSelecting() {
|
func invalidateSelecting() {
|
||||||
@ -93,7 +93,7 @@ class ActivityManager {
|
|||||||
guard nextUnreadActivity == nil else { return }
|
guard nextUnreadActivity == nil else { return }
|
||||||
let title = NSLocalizedString("See first unread article", comment: "First Unread")
|
let title = NSLocalizedString("See first unread article", comment: "First Unread")
|
||||||
nextUnreadActivity = makeSelectingActivity(type: ActivityType.nextUnread, title: title, identifier: "action.nextUnread")
|
nextUnreadActivity = makeSelectingActivity(type: ActivityType.nextUnread, title: title, identifier: "action.nextUnread")
|
||||||
nextUnreadActivity!.becomeCurrent()
|
donate(nextUnreadActivity!)
|
||||||
}
|
}
|
||||||
|
|
||||||
func invalidateNextUnread() {
|
func invalidateNextUnread() {
|
||||||
@ -112,7 +112,7 @@ class ActivityManager {
|
|||||||
updateReadArticleSearchAttributes(with: article)
|
updateReadArticleSearchAttributes(with: article)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
readingActivity?.becomeCurrent()
|
donate(readingActivity!)
|
||||||
}
|
}
|
||||||
|
|
||||||
func invalidateReading() {
|
func invalidateReading() {
|
||||||
@ -135,7 +135,7 @@ class ActivityManager {
|
|||||||
ids.append(contentsOf: identifers(for: feed))
|
ids.append(contentsOf: identifers(for: feed))
|
||||||
}
|
}
|
||||||
|
|
||||||
NSUserActivity.deleteSavedUserActivities(withPersistentIdentifiers: ids) {}
|
CSSearchableIndex.default().deleteSearchableItems(withIdentifiers: ids)
|
||||||
}
|
}
|
||||||
|
|
||||||
static func cleanUp(_ folder: Folder) {
|
static func cleanUp(_ folder: Folder) {
|
||||||
@ -146,11 +146,11 @@ class ActivityManager {
|
|||||||
ids.append(contentsOf: identifers(for: feed))
|
ids.append(contentsOf: identifers(for: feed))
|
||||||
}
|
}
|
||||||
|
|
||||||
NSUserActivity.deleteSavedUserActivities(withPersistentIdentifiers: ids) {}
|
CSSearchableIndex.default().deleteSearchableItems(withIdentifiers: ids)
|
||||||
}
|
}
|
||||||
|
|
||||||
static func cleanUp(_ feed: Feed) {
|
static func cleanUp(_ feed: Feed) {
|
||||||
NSUserActivity.deleteSavedUserActivities(withPersistentIdentifiers: identifers(for: feed)) {}
|
CSSearchableIndex.default().deleteSearchableItems(withIdentifiers: identifers(for: feed))
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -186,6 +186,7 @@ private extension ActivityManager {
|
|||||||
activity.suggestedInvocationPhrase = title
|
activity.suggestedInvocationPhrase = title
|
||||||
activity.isEligibleForPrediction = true
|
activity.isEligibleForPrediction = true
|
||||||
activity.persistentIdentifier = identifier
|
activity.persistentIdentifier = identifier
|
||||||
|
activity.contentAttributeSet?.relatedUniqueIdentifier = identifier
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return activity
|
return activity
|
||||||
@ -217,6 +218,7 @@ private extension ActivityManager {
|
|||||||
attributeSet.title = article.title
|
attributeSet.title = article.title
|
||||||
attributeSet.contentDescription = article.summary
|
attributeSet.contentDescription = article.summary
|
||||||
attributeSet.keywords = makeKeywords(article)
|
attributeSet.keywords = makeKeywords(article)
|
||||||
|
attributeSet.relatedUniqueIdentifier = ActivityManager.identifer(for: article)
|
||||||
|
|
||||||
if let image = article.avatarImage() {
|
if let image = article.avatarImage() {
|
||||||
attributeSet.thumbnailData = image.pngData()
|
attributeSet.thumbnailData = image.pngData()
|
||||||
@ -243,6 +245,7 @@ private extension ActivityManager {
|
|||||||
let attributeSet = CSSearchableItemAttributeSet(itemContentType: kUTTypeItem as String)
|
let attributeSet = CSSearchableItemAttributeSet(itemContentType: kUTTypeItem as String)
|
||||||
attributeSet.title = feed.nameForDisplay
|
attributeSet.title = feed.nameForDisplay
|
||||||
attributeSet.keywords = makeKeywords(feed.nameForDisplay)
|
attributeSet.keywords = makeKeywords(feed.nameForDisplay)
|
||||||
|
attributeSet.relatedUniqueIdentifier = ActivityManager.identifer(for: feed)
|
||||||
if let image = appDelegate.feedIconDownloader.icon(for: feed) {
|
if let image = appDelegate.feedIconDownloader.icon(for: feed) {
|
||||||
#if os(iOS)
|
#if os(iOS)
|
||||||
attributeSet.thumbnailData = image.pngData()
|
attributeSet.thumbnailData = image.pngData()
|
||||||
@ -262,6 +265,19 @@ private extension ActivityManager {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func donate(_ activity: NSUserActivity) {
|
||||||
|
// You have to put the search item in the index or the activity won't index
|
||||||
|
// itself because the relatedUniqueIdentifier on the activity attributeset is populated.
|
||||||
|
if let attributeSet = activity.contentAttributeSet {
|
||||||
|
let identifier = attributeSet.relatedUniqueIdentifier
|
||||||
|
let tempAttributeSet = CSSearchableItemAttributeSet(itemContentType: kUTTypeItem as String)
|
||||||
|
let searchableItem = CSSearchableItem(uniqueIdentifier: identifier, domainIdentifier: nil, attributeSet: tempAttributeSet)
|
||||||
|
CSSearchableIndex.default().indexSearchableItems([searchableItem])
|
||||||
|
}
|
||||||
|
|
||||||
|
activity.becomeCurrent()
|
||||||
|
}
|
||||||
|
|
||||||
static func identifer(for folder: Folder) -> String {
|
static func identifer(for folder: Folder) -> String {
|
||||||
return "account_\(folder.account!.accountID)_folder_\(folder.nameForDisplay)"
|
return "account_\(folder.account!.accountID)_folder_\(folder.nameForDisplay)"
|
||||||
}
|
}
|
||||||
|
@ -73,8 +73,10 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
|
|||||||
os_log("Is first run.", log: log, type: .info)
|
os_log("Is first run.", log: log, type: .info)
|
||||||
}
|
}
|
||||||
|
|
||||||
let localAccount = AccountManager.shared.defaultAccount
|
if isFirstRun && !AccountManager.shared.anyAccountHasAtLeastOneFeed() {
|
||||||
DefaultFeedsImporter.importIfNeeded(isFirstRun, account: localAccount)
|
let localAccount = AccountManager.shared.defaultAccount
|
||||||
|
DefaultFeedsImporter.importDefaultFeeds(account: localAccount)
|
||||||
|
}
|
||||||
|
|
||||||
initializeDownloaders()
|
initializeDownloaders()
|
||||||
initializeHomeScreenQuickActions()
|
initializeHomeScreenQuickActions()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user