diff options
| author | Christian Cleberg <[email protected]> | 2026-08-07 03:06:34 -0500 |
|---|---|---|
| committer | Christian Cleberg <[email protected]> | 2026-08-07 03:06:34 -0500 |
| commit | 9c11d69002d71556fea1e2a938e02d4f4d503ea5 (patch) | |
| tree | 22c3280dca5f85923ddc3cc85bff8751ad46b7fe /Hutch/Views/Lookup/LookupView.swift | |
| parent | 044c33f7f43db1f38d6c44dd8f483298d9efcc06 (diff) | |
| download | hutch-9c11d69002d71556fea1e2a938e02d4f4d503ea5.tar.gz hutch-9c11d69002d71556fea1e2a938e02d4f4d503ea5.tar.bz2 hutch-9c11d69002d71556fea1e2a938e02d4f4d503ea5.zip | |
Expand App Intents: dialogs, search type, mutating intents (#17)
Addresses the three open items on the App Intents ticket:
- Check Status / Check Builds now return a spoken/visible dialog alongside
their value, so they surface a result in Siri instead of appearing to do
nothing. Logic consolidated to always produce a message.
- Search Hutch gains a Search Type parameter (user, git/hg repo, mailing
list, tracker, build job) threaded through the .search route into Lookup,
which pre-selects the type. LookupType now conforms to AppEnum.
- Adds mutating intents (not just navigation): Clear Recent Activity and
Unpin Resource, backed by RecentActivityStore.clear and a new
HomePinStore.removePin. Both act on the active account's storage.
Tests cover search-type routing, the blank-query fallback, and pin removal.
Diffstat (limited to 'Hutch/Views/Lookup/LookupView.swift')
| -rw-r--r-- | Hutch/Views/Lookup/LookupView.swift | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/Hutch/Views/Lookup/LookupView.swift b/Hutch/Views/Lookup/LookupView.swift index 2a26282..89fce5b 100644 --- a/Hutch/Views/Lookup/LookupView.swift +++ b/Hutch/Views/Lookup/LookupView.swift @@ -96,13 +96,17 @@ final class LookupViewModel { client: SRHTClient, appState: AppState, defaults: UserDefaults = .standard, - initialQuery: String = "" + initialQuery: String = "", + initialType: LookupType? = nil ) { self.client = client self.appState = appState self.defaults = defaults self.history = LookupHistoryStore.load(defaults: defaults) self.inputText = initialQuery.trimmingCharacters(in: .whitespacesAndNewlines) + if let initialType { + self.selectedType = initialType + } } func lookup() async { @@ -336,9 +340,11 @@ struct LookupView: View { @Environment(AppState.self) private var appState @State private var viewModel: LookupViewModel? private let initialQuery: String + private let initialType: LookupType? - init(initialQuery: String = "") { + init(initialQuery: String = "", initialType: LookupType? = nil) { self.initialQuery = initialQuery + self.initialType = initialType } var body: some View { @@ -356,7 +362,8 @@ struct LookupView: View { client: appState.client, appState: appState, defaults: appState.accountDefaults, - initialQuery: initialQuery + initialQuery: initialQuery, + initialType: initialType ) } } @@ -443,8 +450,8 @@ struct LookupView: View { } .navigationDestination(for: MoreRoute.self) { route in switch route { - case .lookup(let query): - LookupView(initialQuery: query ?? "") + case .lookup(let query, let type): + LookupView(initialQuery: query ?? "", initialType: type) case .projects: ProjectsListView() case .lists: |
