summaryrefslogtreecommitdiff
path: root/Hutch/App/DeepLink.swift
diff options
context:
space:
mode:
Diffstat (limited to 'Hutch/App/DeepLink.swift')
-rw-r--r--Hutch/App/DeepLink.swift21
1 files changed, 13 insertions, 8 deletions
diff --git a/Hutch/App/DeepLink.swift b/Hutch/App/DeepLink.swift
index 7467fc8..a0331a0 100644
--- a/Hutch/App/DeepLink.swift
+++ b/Hutch/App/DeepLink.swift
@@ -25,7 +25,7 @@ enum HutchRoute: Equatable, Sendable {
case trackers
case systemStatus
case lookup
- case search(query: String)
+ case search(query: String, type: LookupType?)
case projectDashboard(id: String, title: String?)
init?(url: URL) {
@@ -103,7 +103,8 @@ enum HutchRoute: Equatable, Sendable {
case "lookup":
if let query = queryValue("q"), !query.isEmpty {
- self = .search(query: query)
+ let type = queryValue("type").flatMap(LookupType.init(rawValue:))
+ self = .search(query: query, type: type)
} else {
self = .lookup
}
@@ -148,8 +149,12 @@ enum HutchRoute: Equatable, Sendable {
return Self.makeURL(host: "status")
case .lookup:
return Self.makeURL(host: "lookup")
- case .search(let query):
- return Self.makeURL(host: "lookup", queryItems: [URLQueryItem(name: "q", value: query)])
+ case .search(let query, let type):
+ var items = [URLQueryItem(name: "q", value: query)]
+ if let type {
+ items.append(URLQueryItem(name: "type", value: type.rawValue))
+ }
+ return Self.makeURL(host: "lookup", queryItems: items)
case .projectDashboard(let id, let title):
return Self.makeURL(
host: "projects",
@@ -205,8 +210,8 @@ enum DeepLink: Equatable {
case systemStatus
/// hutch://lookup
case lookup
- /// hutch://lookup?q=<query>
- case search(query: String)
+ /// hutch://lookup?q=<query>&type=<type>
+ case search(query: String, type: LookupType?)
/// hutch://builds?filter=failed
case failedBuilds
/// hutch://projects/<rid>
@@ -253,8 +258,8 @@ enum DeepLink: Equatable {
self = .systemStatus
case .lookup:
self = .lookup
- case .search(let query):
- self = .search(query: query)
+ case .search(let query, let type):
+ self = .search(query: query, type: type)
case .projectDashboard(let id, let title):
self = .projectDashboard(id: id, title: title)
}