cleanup and hook up delete button
This commit is contained in:
parent
2f700042ba
commit
0f5703eb4f
3 changed files with 42 additions and 25 deletions
|
@ -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>
|
||||
}
|
||||
|
|
|
@ -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())
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Add table
Reference in a new issue