Open BxOxSxS opened 1 year ago
I managed to do workaround by manually implementing listen
using wasm_bindgen
with something like that:
#[wasm_bindgen]
extern "C" {
#[wasm_bindgen(js_namespace = ["window", "__TAURI__", "event"])]
async fn listen(event: &str, listener: &js_sys::Function) -> JsValue;
}
pub async fn do_something_on_event() -> Result<(), Error> {
let closure = Closure::wrap(Box::new(move |event: JsValue| {
let event: tauri_sys::event::Event<String> = match serde_wasm_bindgen::from_value(event) {
Ok(event) => event,
Err(e) => {
// Some error handling...
return;
}
};
let payload = event.payload;
// Do something with payload
}) as Box<dyn FnMut(JsValue)>);
tauri_sys::tauri::invoke(
"command",
&Payload {
// Payload params
},
)
.await?;
let _ = listen("event", closure.as_ref().unchecked_ref()).await;
closure.forget();
Ok(())
}
I actually end up better for me as I could more adjust event handling. I leave issue opened as lib's function does not work
As the title says listening or emitting with tauri 2.0.0-alpha.9 event does not work with error:
JS Binding: JsValue("Command tauri not found")
.For example with such code:
Invoking commands works fine and I have not tested other stuff. I know it's alpha and things can get broken but is there at least some workaround?