use leptos::*; use leptos_use::docs::demo_or_body; use leptos_use::{use_service_worker, use_window}; use web_sys::HtmlMetaElement; #[component] fn Demo() -> impl IntoView { let build = load_meta_element("version") .map(|meta| meta.content()) .expect("'version' meta element"); let sw = use_service_worker(); view! {

"Current build: "{build}


"registration: "{move || format!("{:#?}", sw.registration.get())}

"installing: "{move || sw.installing.get()}

"waiting: "{move || sw.waiting.get()}

"active: "{move || sw.active.get()}


} } fn main() { _ = console_log::init_with_level(log::Level::Debug); console_error_panic_hook::set_once(); mount_to(demo_or_body(), || { view! { } }) } fn load_meta_element>(name: S) -> Result { use wasm_bindgen::JsCast; use_window() .as_ref() .ok_or_else(|| "No window instance!".to_owned()) .and_then(|window| { window .document() .ok_or_else(|| "No document instance!".to_owned()) }) .and_then(|document| { document .query_selector(format!("meta[name=\"{}\"]", name.as_ref()).as_str()) .ok() .flatten() .ok_or_else(|| format!("Unable to find meta element with name 'version'.")) }) .and_then(|element| { element.dyn_into::().map_err(|err| { format!("Unable to cast element to HtmlMetaElement. Err: '{err:?}'.") }) }) }