From 06294d872e63f0e9027cff4ebe4048a7f1f9d5cc Mon Sep 17 00:00:00 2001 From: emilis Date: Wed, 18 Feb 2026 00:54:09 +0000 Subject: [PATCH] fix hydration error for cancel game button --- werewolves/build.rs | 6 +--- werewolves/src/app/components/nav.rs | 4 +-- werewolves/src/app/pages/game/host.rs | 42 ++++++++++++++--------- werewolves/src/app/pages/user_settings.rs | 6 ++-- werewolves/src/server/game_connection.rs | 1 - 5 files changed, 31 insertions(+), 28 deletions(-) diff --git a/werewolves/build.rs b/werewolves/build.rs index 960dede..d68320c 100644 --- a/werewolves/build.rs +++ b/werewolves/build.rs @@ -1,13 +1,9 @@ -use std::{ - fs::File, - io::Write, -}; +use std::{fs::File, io::Write}; const STYLESHEET_PATH: &str = "../style/faction.scss"; fn main() { println!("cargo::rerun-if-changed=../style/main.scss"); - println!("cargo::rerun-if-changed=../target/site/pkg/werewolves.wasm"); let mut sheet_file = File::create(STYLESHEET_PATH).unwrap(); let mut out = String::new(); diff --git a/werewolves/src/app/components/nav.rs b/werewolves/src/app/components/nav.rs index afb7409..9699f69 100644 --- a/werewolves/src/app/components/nav.rs +++ b/werewolves/src/app/components/nav.rs @@ -82,9 +82,7 @@ pub fn Nav() -> impl IntoView { }) }; let active_game_button = move || { - let Some(session) = auth.session().get() else { - return None; - }; + let session = auth.session().get()?; if active_game.value().read_untracked().is_none() { active_game.dispatch(GetActiveGame { token: session.token, diff --git a/werewolves/src/app/pages/game/host.rs b/werewolves/src/app/pages/game/host.rs index 1ce276e..32e35de 100644 --- a/werewolves/src/app/pages/game/host.rs +++ b/werewolves/src/app/pages/game/host.rs @@ -20,6 +20,7 @@ pub fn HostGamePage( message: Signal>, reply: WriteSignal>, ) -> impl IntoView { + let prefs = expect_context::<(Signal, WriteSignal)>().0; let settings = RwSignal::new(GameSettings::default()); let qr_mode = RwSignal::new(false); let players: RwSignal> = RwSignal::new(Box::new([])); @@ -75,28 +76,40 @@ pub fn HostGamePage( ().into_any() } }; - + let cancel = move || { + view! { + + } + }; view! { - + {cancel} {content} } } #[component] -fn CancelGame(reply: WriteSignal>) -> impl IntoView { +fn CancelGame( + reply: WriteSignal>, + prefs: Signal, +) -> impl IntoView { let open = RwSignal::new(false); - let prefs = expect_context::<(Signal, WriteSignal)>().0; let cancel = move |_| { open.set(false); reply.set(Some(HostMessage::CancelGame)); - #[cfg(feature = "hydrate")] - gloo::utils::window() - .location() - .replace("/") - .console_log_warn(); + #[cfg(not(feature = "ssr"))] + { + gloo::utils::window() + .location() + .replace("/") + .console_log_warn(); + } }; - let content = move || match prefs.get().show_cancel_game { - true => view! { + let derive_hidden = RwSignal::new(false); + Effect::new(move || derive_hidden.set(!prefs.get().show_cancel_game)); + + let content = move || { + view! { + } - .into_any(), - false => ().into_any(), }; - view! { - {content} - } + view! { {content} } } diff --git a/werewolves/src/app/pages/user_settings.rs b/werewolves/src/app/pages/user_settings.rs index 7fe79f6..5ac8741 100644 --- a/werewolves/src/app/pages/user_settings.rs +++ b/werewolves/src/app/pages/user_settings.rs @@ -10,6 +10,8 @@ use crate::app::{ #[component] pub fn UserSettings() -> impl IntoView { let auth = expect_context::>(); + let (prefs_read, prefs_write) = + expect_context::<(Signal, WriteSignal)>(); let log_out = { let click = move |e: MouseEvent| { e.prevent_default(); @@ -18,8 +20,6 @@ pub fn UserSettings() -> impl IntoView { }; view! { } }; - let (prefs_read, prefs_write) = - expect_context::<(Signal, WriteSignal)>(); let tutorial_toggle_button = move || match prefs_read.read().tutorials_enabled { true => view! {