diff --git a/web/src/typings.rs b/web/src/typings.rs index 314e7a0..f52b0e7 100644 --- a/web/src/typings.rs +++ b/web/src/typings.rs @@ -19,6 +19,12 @@ extern "C" { // `log(..)` #[wasm_bindgen(js_namespace = console)] pub fn log(s: &str); + #[wasm_bindgen(js_namespace = console)] + pub fn debug(s: &str); + #[wasm_bindgen(js_namespace = console)] + pub fn warn(s: &str); + #[wasm_bindgen(js_namespace = console)] + pub fn error(s: &str); } #[macro_export] @@ -30,3 +36,33 @@ macro_rules! console_log { (log(&format_args!($($t)*).to_string())) }} } + +#[macro_export] +macro_rules! console_debug { + // Note that this is using the `log` function imported above during + // `bare_bones` + ($($t:tt)*) => {{ + use crate::typings::debug; + (debug(&format_args!($($t)*).to_string())) + }} +} + +#[macro_export] +macro_rules! console_error { + // Note that this is using the `log` function imported above during + // `bare_bones` + ($($t:tt)*) => {{ + use crate::typings::error; + (error(&format_args!($($t)*).to_string())) + }} +} + +#[macro_export] +macro_rules! console_warn { + // Note that this is using the `log` function imported above during + // `bare_bones` + ($($t:tt)*) => {{ + use crate::typings::warn; + (warn(&format_args!($($t)*).to_string())) + }} +} diff --git a/web/src/web.rs b/web/src/web.rs index 1957b40..63147b6 100644 --- a/web/src/web.rs +++ b/web/src/web.rs @@ -11,7 +11,7 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -use crate::console_log; +use crate::{console_debug, console_error, console_log}; use reqwasm::http; use sycamore::context::{use_context, ContextProvider, ContextProviderProps}; use sycamore::futures::spawn_local_in_scope; @@ -39,7 +39,7 @@ impl AppService { if resp.status() != 200 { return Err(format!("Status: {}", resp.status())); } else { - console_log!("We got a valid response back!"); + console_debug!("We got a valid response back!"); let recipe_list = match resp.json::>().await { Ok(recipes) => recipes, Err(e) => return Err(format!("Eror getting recipe list as json {}", e)), @@ -49,16 +49,13 @@ impl AppService { let recipe = match parse::as_recipe(&r) { Ok(r) => r, Err(e) => { - console_log!("Error parsing recipe {}", e); + console_error!("Error parsing recipe {}", e); break; } }; - console_log!("We parsed a recipe {}", recipe.title); + console_debug!("We parsed a recipe {}", recipe.title); parsed_list.push(recipe); } - // TODO(jwall): It would appear that their API doesn't support this - // model for async operations. - //self.recipes = parsed_list; return Ok(parsed_list); } } @@ -92,7 +89,7 @@ fn recipe_list() -> View { #[component(UI)] pub fn ui() -> View { let app_state = AppService::new(); - + console_log!("Starting UI"); spawn_local_in_scope({ let mut app_state = app_state.clone(); async move { @@ -100,7 +97,7 @@ pub fn ui() -> View { Ok(recipes) => { app_state.set_recipes(recipes); } - Err(msg) => console_log!("Failed to get recipes {}", msg), + Err(msg) => console_error!("Failed to get recipes {}", msg), } } });