This commit is contained in:
Brent Simmons 2019-10-18 17:38:32 -07:00
commit e6910fcbed
2 changed files with 31 additions and 13 deletions

View File

@ -42,7 +42,7 @@ class ActivityManager {
let title = NSLocalizedString("See articles for “Today”", comment: "Today")
selectingActivity = makeSelectingActivity(type: ActivityType.selectToday, title: title, identifier: "smartfeed.today")
selectingActivity!.becomeCurrent()
donate(selectingActivity!)
}
func selectingAllUnread() {
@ -50,7 +50,7 @@ class ActivityManager {
let title = NSLocalizedString("See articles in “All Unread”", comment: "All Unread")
selectingActivity = makeSelectingActivity(type: ActivityType.selectAllUnread, title: title, identifier: "smartfeed.allUnread")
selectingActivity!.becomeCurrent()
donate(selectingActivity!)
}
func selectingStarred() {
@ -58,7 +58,7 @@ class ActivityManager {
let title = NSLocalizedString("See articles in “Starred”", comment: "Starred")
selectingActivity = makeSelectingActivity(type: ActivityType.selectStarred, title: title, identifier: "smartfeed.starred")
selectingActivity!.becomeCurrent()
donate(selectingActivity!)
}
func selectingFolder(_ folder: Folder) {
@ -69,7 +69,7 @@ class ActivityManager {
selectingActivity = makeSelectingActivity(type: ActivityType.selectFolder, title: title, identifier: ActivityManager.identifer(for: folder))
selectingActivity!.userInfo = folder.deepLinkUserInfo
selectingActivity!.becomeCurrent()
donate(selectingActivity!)
}
func selectingFeed(_ feed: Feed) {
@ -81,7 +81,7 @@ class ActivityManager {
selectingActivity!.userInfo = feed.deepLinkUserInfo
updateSelectingActivityFeedSearchAttributes(with: feed)
selectingActivity!.becomeCurrent()
donate(selectingActivity!)
}
func invalidateSelecting() {
@ -93,7 +93,7 @@ class ActivityManager {
guard nextUnreadActivity == nil else { return }
let title = NSLocalizedString("See first unread article", comment: "First Unread")
nextUnreadActivity = makeSelectingActivity(type: ActivityType.nextUnread, title: title, identifier: "action.nextUnread")
nextUnreadActivity!.becomeCurrent()
donate(nextUnreadActivity!)
}
func invalidateNextUnread() {
@ -112,7 +112,7 @@ class ActivityManager {
updateReadArticleSearchAttributes(with: article)
#endif
readingActivity?.becomeCurrent()
donate(readingActivity!)
}
func invalidateReading() {
@ -135,7 +135,7 @@ class ActivityManager {
ids.append(contentsOf: identifers(for: feed))
}
NSUserActivity.deleteSavedUserActivities(withPersistentIdentifiers: ids) {}
CSSearchableIndex.default().deleteSearchableItems(withIdentifiers: ids)
}
static func cleanUp(_ folder: Folder) {
@ -146,11 +146,11 @@ class ActivityManager {
ids.append(contentsOf: identifers(for: feed))
}
NSUserActivity.deleteSavedUserActivities(withPersistentIdentifiers: ids) {}
CSSearchableIndex.default().deleteSearchableItems(withIdentifiers: ids)
}
static func cleanUp(_ feed: Feed) {
NSUserActivity.deleteSavedUserActivities(withPersistentIdentifiers: identifers(for: feed)) {}
CSSearchableIndex.default().deleteSearchableItems(withIdentifiers: identifers(for: feed))
}
#endif
@ -186,6 +186,7 @@ private extension ActivityManager {
activity.suggestedInvocationPhrase = title
activity.isEligibleForPrediction = true
activity.persistentIdentifier = identifier
activity.contentAttributeSet?.relatedUniqueIdentifier = identifier
#endif
return activity
@ -217,7 +218,8 @@ private extension ActivityManager {
attributeSet.title = article.title
attributeSet.contentDescription = article.summary
attributeSet.keywords = makeKeywords(article)
attributeSet.relatedUniqueIdentifier = ActivityManager.identifer(for: article)
if let image = article.avatarImage() {
attributeSet.thumbnailData = image.pngData()
}
@ -243,6 +245,7 @@ private extension ActivityManager {
let attributeSet = CSSearchableItemAttributeSet(itemContentType: kUTTypeItem as String)
attributeSet.title = feed.nameForDisplay
attributeSet.keywords = makeKeywords(feed.nameForDisplay)
attributeSet.relatedUniqueIdentifier = ActivityManager.identifer(for: feed)
if let image = appDelegate.feedIconDownloader.icon(for: feed) {
#if os(iOS)
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 {
return "account_\(folder.account!.accountID)_folder_\(folder.nameForDisplay)"
}

View File

@ -73,8 +73,10 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
os_log("Is first run.", log: log, type: .info)
}
let localAccount = AccountManager.shared.defaultAccount
DefaultFeedsImporter.importIfNeeded(isFirstRun, account: localAccount)
if isFirstRun && !AccountManager.shared.anyAccountHasAtLeastOneFeed() {
let localAccount = AccountManager.shared.defaultAccount
DefaultFeedsImporter.importDefaultFeeds(account: localAccount)
}
initializeDownloaders()
initializeHomeScreenQuickActions()