poetrymagnets.online

git clone https://git.bradleygannon.com/poetrymagnets.online.git
Log | Files | Refs

main.rs (1443B)


      1 use eframe::wasm_bindgen::JsCast as _;
      2 
      3 const CANVAS_ID: &str = "poetry-magnets-online-canvas";
      4 
      5 fn main() {
      6     eframe::WebLogger::init(log::LevelFilter::Debug).ok();
      7 
      8     let web_options = eframe::WebOptions::default();
      9 
     10     wasm_bindgen_futures::spawn_local(async {
     11         let document = web_sys::window()
     12             .expect("No window")
     13             .document()
     14             .expect("No document");
     15 
     16         let canvas = document
     17             .get_element_by_id(CANVAS_ID)
     18             .unwrap_or_else(|| panic!("Failed to find {CANVAS_ID}"))
     19             .dyn_into::<web_sys::HtmlCanvasElement>()
     20             .unwrap_or_else(|_| panic!("{CANVAS_ID} was not a HtmlCanvasElement"));
     21 
     22         let start_result = eframe::WebRunner::new()
     23             .start(
     24                 canvas,
     25                 web_options,
     26                 Box::new(|cc| Ok(Box::new(frontend::PoetryMagnetsOnlineApp::new(cc)))),
     27             )
     28             .await;
     29 
     30         if let Some(loading_text) = document.get_element_by_id("loading_text") {
     31             match start_result {
     32                 Ok(_) => {
     33                     loading_text.remove();
     34                 }
     35                 Err(e) => {
     36                     loading_text.set_inner_html(
     37                         "<p> The app has crashed. See the developer console for details. </p>",
     38                     );
     39                     panic!("Failed to start eframe: {e:?}");
     40                 }
     41             }
     42         }
     43     });
     44 }