diff --git a/apple/OmnivoreKit/Sources/App/Views/Home/HomeFeedViewIOS.swift b/apple/OmnivoreKit/Sources/App/Views/Home/HomeFeedViewIOS.swift index 6a4a24788..585e50d96 100644 --- a/apple/OmnivoreKit/Sources/App/Views/Home/HomeFeedViewIOS.swift +++ b/apple/OmnivoreKit/Sources/App/Views/Home/HomeFeedViewIOS.swift @@ -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) + } } } } diff --git a/apple/OmnivoreKit/Sources/Models/DeepLinkDecoder.swift b/apple/OmnivoreKit/Sources/Models/DeepLinkDecoder.swift index d64830071..9d3028358 100644 --- a/apple/OmnivoreKit/Sources/Models/DeepLinkDecoder.swift +++ b/apple/OmnivoreKit/Sources/Models/DeepLinkDecoder.swift @@ -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)