cleanup and hook up delete button

This commit is contained in:
Adam 2024-08-19 18:40:22 -04:00
parent 2f700042ba
commit 0f5703eb4f
3 changed files with 42 additions and 25 deletions

View file

@ -8,23 +8,37 @@ use std::collections::BTreeSet;
#[component]
pub fn Browser() -> impl IntoView {
// Websocket stuff
let websocket = expect_context::<WebSocketContext>();
// 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::<ReadSignal<Vec<GameBrowserMeta>>>();
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::<ReadSignal<CardPacksMeta>>();
let new_game_name_ref = create_node_ref::<Input>();
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<u8>>(BTreeSet::new());
// create_effect(move |_| {
// logging::log!("{:#?}", selected_packs().iter().collect::<Vec<_>>());
// });
// 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::<Vec<_>>(),
})
@ -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! {
<div class="p-1">
<h2 class="text-2xl">Game Browser</h2>
@ -91,7 +95,14 @@ pub fn Browser() -> impl IntoView {
>
Join
</button>
<button type="button">Delete</button>
<button
type="button"
on:click=move |e| {
set_delete_id(event_target_value(&e));
}
>
Delete
</button>
</td>
</tr>
}

View file

@ -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())
}
}

View file

@ -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 {