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 {
|
pub fn Dashboard() -> Element {
|
||||||
let mut servers = use_signal(|| Vec::new());
|
let mut servers = use_signal(|| Vec::new());
|
||||||
let server_search = use_signal(|| String::new());
|
let server_search = use_signal(|| String::new());
|
||||||
|
let session_id = crate::utils::use_cookie::<String>("session_id", || "Guest".to_string());
|
||||||
|
|
||||||
use_effect(move || {
|
use_effect(move || {
|
||||||
spawn(async move {
|
spawn(async move {
|
||||||
|
|||||||
+8
-2
@@ -60,13 +60,19 @@ pub fn Login() -> Element {
|
|||||||
|
|
||||||
div {
|
div {
|
||||||
p { "Username" }
|
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{
|
div{
|
||||||
p { "Password" }
|
p { "Password" }
|
||||||
input {
|
input {
|
||||||
class: "field",
|
class: "field",
|
||||||
onchange: {
|
oninput: {
|
||||||
let mut password = password.clone();
|
let mut password = password.clone();
|
||||||
move |e: Event<FormData>| {password.set(e.value())}
|
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 wasm_bindgen::JsCast;
|
||||||
use web_sys::{window, HtmlDocument};
|
use web_sys::{window, HtmlDocument};
|
||||||
|
|
||||||
@@ -36,6 +38,31 @@ pub fn get_cookie(name: &str) -> Option<String> {
|
|||||||
None
|
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) {
|
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