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}