working use_cookie hook
This commit is contained in:
+28
-1
@@ -1,3 +1,5 @@
|
||||
use dioxus::prelude::*;
|
||||
use std::str::FromStr;
|
||||
use wasm_bindgen::JsCast;
|
||||
use web_sys::{window, HtmlDocument};
|
||||
|
||||
@@ -36,6 +38,31 @@ pub fn get_cookie(name: &str) -> Option<String> {
|
||||
None
|
||||
}
|
||||
|
||||
pub fn use_cookie<T: FromStr + Default + std::fmt::Display + 'static>(
|
||||
name: &str,
|
||||
default: fn() -> T,
|
||||
) -> Signal<T> {
|
||||
let name = name.to_string();
|
||||
let signal = use_signal(default);
|
||||
|
||||
use_effect({
|
||||
let mut signal = signal.clone();
|
||||
move || {
|
||||
if let Some(c) = get_cookie(&name) {
|
||||
if let Ok(cv) = T::from_str(&c) {
|
||||
signal.set(cv);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
signal
|
||||
}
|
||||
|
||||
pub fn redirect(target: &str) {
|
||||
web_sys::window().unwrap().location().set_href(target).unwrap();
|
||||
web_sys::window()
|
||||
.unwrap()
|
||||
.location()
|
||||
.set_href(target)
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user