Commit 2b449d4
Init callback functions
Changed files (3)
modifiedexamples/clickcounter/Cargo.lockmodifiedexamples/clickcounter/Cargo.tomlmodifiedexamples/clickcounter/src/lib.rs
Diff
@@ -450,6 +450,15 @@ dependencies = [ ] [[package]]+name = "inventory"+version = "0.3.24"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "a4f0c30c76f2f4ccee3fe55a2435f691ca00c0e4bd87abe4f4a851b1d4dac39b"+dependencies = [+ "rustversion",+]++[[package]] name = "inventory-impl" version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index"@@ -506,7 +515,7 @@ version = "0.1.0" dependencies = [ "gloo", "gloo-console",- "inventory",+ "inventory 0.1.11", "js-sys", "kaja-callback-macro", "serde",@@ -521,6 +530,7 @@ version = "0.1.0" dependencies = [ "console_error_panic_hook", "gloo",+ "inventory 0.3.24", "js-sys", "kaja-callback-macro", "kaja-html-macro",@@ -22,3 +22,4 @@ serde_json = "1.0.150" uuid = { version = "1.23.2", features = ["js", "v4"] } console_error_panic_hook = "0.1.7" kaja-callback-macro = { version = "0.1.0", path = "../../../kaja-callback-macro" }+inventory = "0.3.24"@@ -12,6 +12,9 @@ struct AppData { pub static APP_DATA: RwLock<AppData> = RwLock::new(AppData { current_count: 0 }); +pub struct InitFn(fn());+inventory::collect!(InitFn);+ #[callback("incrementCounter")] pub fn increment_counter() { let mut app_data = APP_DATA.write().unwrap();@@ -26,13 +29,6 @@ pub fn decrement_counter() { update_counter_display(&app_data); } -#[wasm_bindgen(js_name = initCallbacks)]-pub fn init_callbacks() {- log!("Initializing callbacks");- increment_counter_register();- decrement_counter_register();-}- fn update_counter_display(app_data: &AppData) { log!("Updating counter display"); let count = app_data.current_count;@@ -62,12 +58,18 @@ fn update_counter_display(app_data: &AppData) { } } +pub fn init_callbacks() {+ for init in inventory::iter::<InitFn> {+ (init.0)();+ }+}+ #[wasm_bindgen(start)] pub fn init() { std::panic::set_hook(Box::new(console_error_panic_hook::hook));+ console_error_panic_hook::set_once(); let mut app_data = APP_DATA.read().unwrap(); update_counter_display(&app_data);- init_callbacks(); }