use crate::components::websocket::WebSocketContext; use leptos::*; use leptos_use::core::ConnectionReadyState; use lib::models::*; use serde_json::to_string; #[component] pub fn Browser() -> impl IntoView { let websocket = expect_context::(); let connected = move || websocket.ready_state.get() == ConnectionReadyState::Open; let game_update_context = expect_context::>>(); let (active_games, set_active_games) = create_signal::>(vec![]); let fake_new_game_request = NewGameRequest { name: String::from("Ligma"), }; // Game stuff let new_game_test = move |_| { (websocket.send)(&to_string(&fake_new_game_request).unwrap()); }; create_effect(move |_| { game_update_context.with(move |games| { if let Some(games) = games { set_active_games(games.games.clone()); } }) }); // Clear games list on disconnect create_effect(move |_| { if !connected() { set_active_games(vec![]); } }); view! {

    Game Browser

    {move || active_games().into_iter().map(|n| view! {
  • {n}
  • }).collect_view()}
} }