Skip to content

Commit

Permalink
Handling url open in navigation stack view
Browse files Browse the repository at this point in the history
  • Loading branch information
kamaal111 committed Mar 30, 2024
1 parent 5f10aa9 commit 68087ed
Showing 1 changed file with 7 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,20 @@ import KamaalUI
public struct NavigationStackView<Sidebar: View, Screen: NavigatorStackValue, WrappedView: View>: View {
@StateObject private var navigator: Navigator<Screen>

let handleURLOpen: (_ url: URL) -> Screen?
let sidebar: () -> Sidebar
let passthroughEnvironment: (_ view: Screen.ScreenView) -> WrappedView

public init(
initialStack: [Screen],
handleURLOpen: @escaping (_ url: URL) -> Screen? = { _ in nil },
@ViewBuilder sidebar: @escaping () -> Sidebar,
@ViewBuilder passthroughEnvironment: @escaping (_ view: Screen.ScreenView) -> WrappedView
) {
self.sidebar = sidebar
self._navigator = StateObject(wrappedValue: Navigator(stack: initialStack))
self.passthroughEnvironment = passthroughEnvironment
self.handleURLOpen = handleURLOpen
}

public var body: some View {
Expand Down Expand Up @@ -91,6 +94,10 @@ public struct NavigationStackView<Sidebar: View, Screen: NavigatorStackValue, Wr
}
#endif
}
.onOpenURL(perform: { url in
guard let screen = handleURLOpen(url) else { return }
self.navigator.navigate(to: screen)
})
}
}

Expand Down

0 comments on commit 68087ed

Please sign in to comment.