From ddfac3dc2e700642bb1757f6feb4cfacf076c3e2 Mon Sep 17 00:00:00 2001 From: Lucas Vas Date: Fri, 19 Dec 2025 12:26:02 -0500 Subject: [PATCH] feat: redirect from loaner check in to main page --- src/pages/loaner_page.rs | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/src/pages/loaner_page.rs b/src/pages/loaner_page.rs index 9595913..376724e 100644 --- a/src/pages/loaner_page.rs +++ b/src/pages/loaner_page.rs @@ -298,6 +298,8 @@ pub fn LoanerBorrowForm() -> impl IntoView { #[component] pub fn LoanerReturnForm() -> impl IntoView { + let navigate = use_navigate(); + // Register server actions let check_in_action = ServerAction::::new(); @@ -313,26 +315,18 @@ pub fn LoanerReturnForm() -> impl IntoView { let dialog_ref = NodeRef::::new(); let chosen_student = RwSignal::new(None::); - let dialog_disabled = RwSignal::new(false); + let dialog_disabled = Signal::derive(move || check_in_action.pending().get()); // Create an effect to run after check-in - refreshes the list with another scan request. // This could be beneficial if we ever decided to make multiple loaner kiosks (think SAT days) Effect::new(move || { if let Some(Ok(_)) = check_in_action.value().get() { - // Check the local loaner list and remove the indicated student from it. - return_list_refresh.update(|n| *n += 1); + // Return to the main page. if let Some(dialog) = dialog_ref.get() { dialog.close(); } - } - }); - - // We can't use a Memo in our custom components for the disabled signal. - Effect::new(move || { - if check_in_action.pending().get() { - dialog_disabled.set(true); - } else { - dialog_disabled.set(false); + navigate("/loaners", Default::default()); + check_in_action.clear(); } });