working use_cookie hook
This commit is contained in:
@@ -12,6 +12,7 @@ const DASHBOARD_CSS: Asset = asset!("/assets/styles/dashboard.css");
|
||||
pub fn Dashboard() -> Element {
|
||||
let mut servers = use_signal(|| Vec::new());
|
||||
let server_search = use_signal(|| String::new());
|
||||
let session_id = crate::utils::use_cookie::<String>("session_id", || "Guest".to_string());
|
||||
|
||||
use_effect(move || {
|
||||
spawn(async move {
|
||||
|
||||
+8
-2
@@ -60,13 +60,19 @@ pub fn Login() -> Element {
|
||||
|
||||
div {
|
||||
p { "Username" }
|
||||
input { onchange: {let mut username = username.clone(); move |e: Event<FormData>| {username.set(e.value())}}, class: "field" }
|
||||
input {
|
||||
class: "field",
|
||||
oninput: {
|
||||
let mut username = username.clone();
|
||||
move |e: Event<FormData>| {username.set(e.value())}
|
||||
},
|
||||
}
|
||||
}
|
||||
div{
|
||||
p { "Password" }
|
||||
input {
|
||||
class: "field",
|
||||
onchange: {
|
||||
oninput: {
|
||||
let mut password = password.clone();
|
||||
move |e: Event<FormData>| {password.set(e.value())}
|
||||
},
|
||||
|
||||
+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