From 4a24db0639a28889b5716190ae35e7269c979b08 Mon Sep 17 00:00:00 2001 From: Leo dev Date: Tue, 15 Jul 2025 13:45:22 +0200 Subject: [PATCH] working use_cookie hook --- src/dashboard.rs | 1 + src/login.rs | 10 ++++++++-- src/utils.rs | 29 ++++++++++++++++++++++++++++- 3 files changed, 37 insertions(+), 3 deletions(-) diff --git a/src/dashboard.rs b/src/dashboard.rs index cf403ab..e46a737 100644 --- a/src/dashboard.rs +++ b/src/dashboard.rs @@ -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::("session_id", || "Guest".to_string()); use_effect(move || { spawn(async move { diff --git a/src/login.rs b/src/login.rs index 3150020..fd1bcb0 100644 --- a/src/login.rs +++ b/src/login.rs @@ -60,13 +60,19 @@ pub fn Login() -> Element { div { p { "Username" } - input { onchange: {let mut username = username.clone(); move |e: Event| {username.set(e.value())}}, class: "field" } + input { + class: "field", + oninput: { + let mut username = username.clone(); + move |e: Event| {username.set(e.value())} + }, + } } div{ p { "Password" } input { class: "field", - onchange: { + oninput: { let mut password = password.clone(); move |e: Event| {password.set(e.value())} }, diff --git a/src/utils.rs b/src/utils.rs index c9fd497..e9b99c0 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -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 { None } +pub fn use_cookie( + name: &str, + default: fn() -> T, +) -> Signal { + 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(); }