use crate::engine::navigation_runtime::NavigationRuntime;
use crate::engine::CoreResult;
use crate::navigation::{OxideRoute, OxideRouteKind, RouteContext};
pub struct NavigationCtx<'a> {
runtime: &'a NavigationRuntime,
route: &'a RouteContext,
}
impl<'a> NavigationCtx<'a> {
pub fn new(runtime: &'a NavigationRuntime, route: &'a RouteContext) -> Self {
Self { runtime, route }
}
pub fn route(&self) -> &RouteContext {
self.route
}
pub fn push<R: OxideRoute>(&self, route: R) -> CoreResult<()> {
self.runtime.push(route)
}
pub fn pop(&self) -> CoreResult<()> {
self.runtime.pop()
}
pub fn pop_until<K: OxideRouteKind>(&self, kind: K) -> CoreResult<()> {
self.runtime.pop_until(kind)
}
}