feat(intents): onscreen entity annotations + App Intents tests
All checks were successful
CI / build-and-deploy (push) Successful in 28s
All checks were successful
CI / build-and-deploy (push) Successful in 28s
- bookmarkOnscreen(_:) publishes the viewed bookmark as the on-screen entity (NSUserActivity.appEntityIdentifier) so Siri can resolve "this" / "summarize this one"; applied to the BrowserView sheets in BookmarksView and SearchView - Add MarksTests (XCTest) covering entity mapping, EntityIdentifier, IntentRouter, and the real perform() of SearchMarksIntent and OpenBookmarkIntent; wired into the Marks scheme test phase Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
19
Marks/Intents/BookmarkOnscreen.swift
Normal file
19
Marks/Intents/BookmarkOnscreen.swift
Normal file
@@ -0,0 +1,19 @@
|
||||
import SwiftUI
|
||||
import AppIntents
|
||||
|
||||
extension View {
|
||||
/// Marks `bookmark` as the on-screen entity via an `NSUserActivity`, so
|
||||
/// Siri / Apple Intelligence can resolve references like "summarize this"
|
||||
/// or "open this one" while the bookmark is being viewed.
|
||||
///
|
||||
/// iOS 26.0 ships no SwiftUI `.appEntityIdentifier` modifier, so this uses
|
||||
/// the supported path: the standard `.userActivity` modifier plus
|
||||
/// `NSUserActivity.appEntityIdentifier` (from `AppEntityAnnotatable`).
|
||||
func bookmarkOnscreen(_ bookmark: Bookmark) -> some View {
|
||||
userActivity("com.magicive.marks.viewBookmark", element: bookmark.id) { id, activity in
|
||||
activity.title = bookmark.displayTitle
|
||||
activity.appEntityIdentifier = EntityIdentifier(for: BookmarkEntity.self, identifier: id)
|
||||
activity.isEligibleForSearch = true
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user