diff options
author | Kjetil Orbekk <kj@orbekk.com> | 2022-11-26 13:21:33 -0500 |
---|---|---|
committer | Kjetil Orbekk <kj@orbekk.com> | 2022-11-27 17:23:11 -0500 |
commit | 8fe6b9755a9c96246e7aa1158ee02becda79aa68 (patch) | |
tree | 536105893e893c0af76ffd10778060d49fb62674 /webapp/src/components | |
parent | 685ac902e3faf4ed5a76b8c859b01f7d2e2d9ea0 (diff) |
Improve error reporting when server requests fail
Diffstat (limited to 'webapp/src/components')
-rw-r--r-- | webapp/src/components/app_context_provider.rs | 12 | ||||
-rw-r--r-- | webapp/src/components/table.rs | 7 |
2 files changed, 10 insertions, 9 deletions
diff --git a/webapp/src/components/app_context_provider.rs b/webapp/src/components/app_context_provider.rs index 4c9e18f..7ca0cf3 100644 --- a/webapp/src/components/app_context_provider.rs +++ b/webapp/src/components/app_context_provider.rs @@ -1,5 +1,5 @@ use log::error; -use crate::routing::Route; +use crate::{routing::Route, utils::ok_json}; use gloo_net::http::Request; use log::info; use protocol::UserInfo; @@ -8,6 +8,7 @@ use std::future::Future; use wasm_bindgen_futures::spawn_local; use yew::prelude::*; use yew_router::prelude::*; +use anyhow::Context; #[derive(Properties, Clone, PartialEq, Debug)] pub struct ErrorInfoProperties { @@ -36,7 +37,7 @@ impl AppContext { if let Err(err) = f.await { error!("Error occurred: {err:?}"); error.set(Some(ErrorInfoProperties { - message: format!("Some error occured: {:?}", err), + message: format!("{err:?}"), })); } }); @@ -55,7 +56,7 @@ impl AppContext { let history = self.history.clone(); self.spawn_async(async move { let response = Request::post("/api/table").send().await?; - let table_id: Uuid = response.json().await?; + let table_id: Uuid = ok_json(response).await.context("creating table")?; info!("Created table {table_id}"); if let Some(user_info) = user.as_ref() { user.set(Some(UserInfo { @@ -94,7 +95,7 @@ pub struct Props { } async fn initialize_user_info() -> Result<Option<UserInfo>, anyhow::Error> { - let response = Request::get("/api/user/info").send().await?; + let response = Request::get("/api/user/info").send().await.context("fetching user_info")?; if response.status() == 401 { web_sys::window() .unwrap() @@ -102,8 +103,7 @@ async fn initialize_user_info() -> Result<Option<UserInfo>, anyhow::Error> { .assign("/api/login") .unwrap(); }; - let user_info = response.json().await?; - Ok(user_info) + Ok(ok_json(response).await.context("requesting user_info")?) } pub fn use_app_context() -> AppContext { diff --git a/webapp/src/components/table.rs b/webapp/src/components/table.rs index c4f693e..a874a93 100644 --- a/webapp/src/components/table.rs +++ b/webapp/src/components/table.rs @@ -4,6 +4,8 @@ use protocol::bridge_engine::GameStatePlayerView; use yew::prelude::*; use crate::use_app_context; use crate::components::Hand; +use crate::utils::ok_json; +use anyhow::Context; #[function_component(OnlineTable)] pub fn online_table(props: &OnlineTableProps) -> Html { @@ -20,9 +22,8 @@ pub fn online_table(props: &OnlineTableProps) -> Html { ctx.spawn_async(async move { let response = Request::get(&format!("/api/table/{}", props.table.id)) .send() - .await?; - // info!("Got response: {:#?}", response.body()); - let table = response.json().await?; + .await.context("fetching table data")?; + let table = ok_json(response).await?; table_state.set(Some(table)); Ok(()) }); |