Support read, search, and saved-search deep link formats
This commit is contained in:
@ -179,11 +179,20 @@ struct AnimatingCellHeight: AnimatableModifier {
|
||||
}
|
||||
}
|
||||
.onOpenURL { url in
|
||||
withoutAnimation {
|
||||
viewModel.linkRequest = nil
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(100)) {
|
||||
if let linkRequestID = DeepLink.make(from: url)?.linkRequestID {
|
||||
viewModel.linkRequest = LinkRequest(id: UUID(), serverID: linkRequestID)
|
||||
viewModel.linkRequest = nil
|
||||
if let deepLink = DeepLink.make(from: url) {
|
||||
switch deepLink {
|
||||
case let .search(query):
|
||||
viewModel.searchTerm = query
|
||||
case let .savedSearch(named):
|
||||
if let filter = LinkedItemFilter(rawValue: named) {
|
||||
viewModel.appliedFilter = filter.rawValue
|
||||
}
|
||||
case let .webAppLinkRequest(requestID):
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(100)) {
|
||||
withoutAnimation {
|
||||
viewModel.linkRequest = LinkRequest(id: UUID(), serverID: requestID)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -11,6 +11,8 @@ public struct LinkRequest: Identifiable, Hashable {
|
||||
}
|
||||
|
||||
public enum DeepLink {
|
||||
case search(query: String)
|
||||
case savedSearch(named: String)
|
||||
case webAppLinkRequest(requestID: String)
|
||||
}
|
||||
|
||||
@ -32,6 +34,13 @@ public extension DeepLink {
|
||||
|
||||
private static func deepLinkFromOmnivoreScheme(url: URL) -> DeepLink? {
|
||||
switch url.host {
|
||||
case "search":
|
||||
let query = url.path.replacingOccurrences(of: "/", with: "")
|
||||
return .search(query: query)
|
||||
case "saved-search":
|
||||
let named = url.path.replacingOccurrences(of: "/", with: "")
|
||||
return .savedSearch(named: named)
|
||||
case "read":
|
||||
case "shareExtensionRequestID":
|
||||
let requestID = url.path.replacingOccurrences(of: "/", with: "")
|
||||
return .webAppLinkRequest(requestID: requestID)
|
||||
|
||||
Reference in New Issue
Block a user