Skip to main content

auric_runtime/routing/
router.rs

1use super::RouteDef;
2use std::sync::Arc;
3use web_sys::window;
4
5#[derive(Clone)]
6pub struct Router {
7    #[allow(unused)]
8    router: Arc<actix_router::Router<RouteDef>>,
9}
10
11impl Router {
12    pub fn new(route_defs: &[RouteDef]) -> Self {
13        let mut builder = actix_router::Router::build();
14        for route_def in route_defs.iter() {
15            builder.path(&route_def.path, route_def.clone());
16        }
17        let router = Arc::new(builder.finish());
18        Self { router }
19    }
20
21    pub fn init(&self) -> anyhow::Result<()> {
22        // Find route for href
23        let _href = window()
24            .and_then(|win| win.location().href().ok())
25            .expect("Could not access window location");
26        // TODO
27
28        // Enter route
29        // TODO
30
31        // Done
32        web_sys::console::log_1(&"Initialized router".into());
33        Ok(())
34    }
35}