diff options
Diffstat (limited to 'webapp/src')
-rw-r--r-- | webapp/src/components/table.rs | 19 | ||||
-rw-r--r-- | webapp/src/services.rs | 9 |
2 files changed, 26 insertions, 2 deletions
diff --git a/webapp/src/components/table.rs b/webapp/src/components/table.rs index 9702793..3bc52a3 100644 --- a/webapp/src/components/table.rs +++ b/webapp/src/components/table.rs @@ -35,6 +35,7 @@ struct OnlineTableInner { pub enum Msg { TableStateUpdated(Result<TableStatePlayerView, anyhow::Error>), + RequestNewDeal, Bid(Bid), Play(Card), } @@ -136,6 +137,15 @@ impl Component for OnlineTableInner { ctx.props().app_ctx.set_error(error); false } + Msg::RequestNewDeal => { + let table = ctx.props().table.clone(); + ctx.link().send_future( + async move { + services::new_deal(table.clone()).await?; + services::get_table_player_view(table).await + }.map(Msg::TableStateUpdated)); + false + }, } } @@ -146,8 +156,13 @@ impl Component for OnlineTableInner { <p>{"An error occurred."}</p> }, Some(TableStatePlayerView::Game(game)) => self.view_game(ctx, game), - Some(TableStatePlayerView::Result(result)) => html! { - <p>{"A beautiful result."}</p> + Some(TableStatePlayerView::Result(_)) => html! { + <> + <p>{"A beautiful result."}</p> + <button onclick={ctx.link().callback(|_| Msg::RequestNewDeal)}> + {"New deal"} + </button> + </> }, } } diff --git a/webapp/src/services.rs b/webapp/src/services.rs index 43b1698..668530f 100644 --- a/webapp/src/services.rs +++ b/webapp/src/services.rs @@ -34,3 +34,12 @@ pub async fn play(table: Table, card: Card) -> Result<(), anyhow::Error> { .context("submitting play")?; ok_json(response).await } + +pub async fn new_deal(table: Table) -> Result<(), anyhow::Error> { + let response = + Request::post(&format!("/api/table/{}/admin/deal", table.id)) + .send() + .await + .context("requesting new deal")?; + ok_json(response).await +} |