From 0f5703eb4ff8e6b43b035ab83f71fdd4f02bcd76 Mon Sep 17 00:00:00 2001 From: Adam <24621027+adoyle0@users.noreply.github.com> Date: Mon, 19 Aug 2024 18:40:22 -0400 Subject: [PATCH] cleanup and hook up delete button --- client/src/components/browser.rs | 57 ++++++++++++++++++------------ client/src/components/websocket.rs | 4 +-- lib/src/lib.rs | 6 ++++ 3 files changed, 42 insertions(+), 25 deletions(-) diff --git a/client/src/components/browser.rs b/client/src/components/browser.rs index 948592d..b3a6e13 100644 --- a/client/src/components/browser.rs +++ b/client/src/components/browser.rs @@ -8,23 +8,37 @@ use std::collections::BTreeSet; #[component] pub fn Browser() -> impl IntoView { + // Websocket stuff let websocket = expect_context::(); - - // TODO: don't do this - let tx = websocket.clone(); - let connected = move || websocket.ready_state.get() == ConnectionReadyState::Open; + let tx = websocket.clone(); + let (websocket_send, set_websocket_send) = create_signal("".to_string()); + create_effect(move |_| { + tx.send(&websocket_send()); + }); + // Browser stuff let game_browser_context = expect_context::>>(); + let (join_id, set_join_id) = create_signal("".to_string()); + let (delete_id, set_delete_id) = create_signal("".to_string()); + create_effect(move |_| { + set_websocket_send(to_string(&GameJoinRequest { id: join_id() }).unwrap()); + }); + create_effect(move |_| { + set_websocket_send( + to_string(&GameDeleteRequest { + delete_game_id: delete_id(), + }) + .unwrap(), + ); + }); + + // New game stuff let card_packs = expect_context::>(); - let new_game_name_ref = create_node_ref::(); + let (show_packs, set_show_packs) = create_signal(false); + let show_packs_button = move |_| set_show_packs(!show_packs()); let (selected_packs, set_selected_packs) = create_signal::>(BTreeSet::new()); - // create_effect(move |_| { - // logging::log!("{:#?}", selected_packs().iter().collect::>()); - // }); - - // Game stuff let new_game = move |_| { if let Some(input) = new_game_name_ref.get() { if input.value() == *"" { @@ -32,8 +46,8 @@ pub fn Browser() -> impl IntoView { } else if selected_packs().is_empty() { logging::log!("New game selected packs is empty!"); } else { - tx.send( - &to_string(&NewGameRequest { + set_websocket_send( + to_string(&NewGameRequest { name: input.value(), packs: selected_packs().into_iter().collect::>(), }) @@ -44,16 +58,6 @@ pub fn Browser() -> impl IntoView { } }; - let (show_packs, set_show_packs) = create_signal(false); - - let show_packs_button = move |_| set_show_packs(!show_packs()); - - let (join_id, set_join_id) = create_signal("".to_string()); - - create_effect(move |_| { - websocket.send(&to_string(&GameJoinRequest { id: join_id() }).unwrap()); - }); - view! {

Game Browser

@@ -91,7 +95,14 @@ pub fn Browser() -> impl IntoView { > Join - + } diff --git a/client/src/components/websocket.rs b/client/src/components/websocket.rs index 0580d7e..0d56f3d 100644 --- a/client/src/components/websocket.rs +++ b/client/src/components/websocket.rs @@ -31,8 +31,8 @@ impl WebSocketContext { } #[inline(always)] - pub fn send(&self, message: &String) { - (self.send)(message) + pub fn send(&self, message: &str) { + (self.send)(&message.to_string()) } } diff --git a/lib/src/lib.rs b/lib/src/lib.rs index 2405652..f62f24f 100644 --- a/lib/src/lib.rs +++ b/lib/src/lib.rs @@ -2,6 +2,12 @@ use std::collections::BTreeSet; use serde::{Deserialize, Serialize}; +/// Delete game request +#[derive(Debug, Serialize, Deserialize)] +pub struct GameDeleteRequest { + pub delete_game_id: String, +} + /// Game join request #[derive(Debug, Serialize, Deserialize)] pub struct GameJoinRequest {