Skip to main content

elvis_web/
router.rs

1//! Elvis Router
2use crate::Error;
3use elvis_core::{Error as CoreError, Router as RouterTrait};
4use wasm_bindgen::JsValue;
5use web_sys::window;
6
7/// Elvis Router
8pub struct Router;
9
10impl RouterTrait for Router {
11    // /// Back to last page
12    // fn back() -> Result<(), CoreError> {
13    //     let window = window().unwrap();
14    //     let history = window.history();
15    //     CoreError::check::<_, Error, JsValue>(&history)?;
16    //     CoreError::check::<_, Error, JsValue>(&history.unwrap().back())?;
17    //     CoreError::check::<_, Error, JsValue>(&window.location().reload())?;
18    //     Ok(())
19    // }
20
21    /// Push new pathl
22    fn push(path: &str) -> Result<(), CoreError> {
23        let history = window().unwrap().history();
24        CoreError::check::<_, Error, JsValue>(&history)?;
25        CoreError::check::<_, Error, JsValue>(&history.clone().unwrap().push_state_with_url(
26            &JsValue::NULL,
27            "",
28            Some(&format!("{}.html", path)),
29        ))?;
30        CoreError::check::<_, Error, JsValue>(&history.unwrap().go())?;
31
32        Ok(())
33    }
34}