use gloo_net::http::Request; use log::info; use yew::prelude::*; use crate::use_app_context; #[function_component(Table)] pub fn table(props: &TableProps) -> Html { let ctx = use_app_context(); let table_state: UseStateHandle> = use_state(|| None); { // TODO update this from server state let table_state = table_state.clone(); let props = props.clone(); let ctx = ctx.clone(); use_effect_with_deps( move |_| { ctx.spawn_async(async move { let response = Request::get(&format!("/api/table/{}", props.table.id)) .send() .await?; let table: protocol::bridge_engine::GameState = response.json().await?; table_state.set(Some(format!("{:#?}", table))); Ok(()) }); || () }, (), ); } let leave_table = { let ctx = ctx.clone(); Callback::from(move |_| { ctx.leave_table(); }) }; html! { <>

{ format!("This is table {}", props.table.id) }

{ table_state.as_ref().map_or("".to_string(), |t| format!("{}", t)) }
} } #[derive(PartialEq, Properties, Clone)] pub struct TableProps { pub table: protocol::Table, }