825791f2c7
* Added builder to wasm client * missing wasm_bindgen macros * Added constructor macro on GatewayEndpointConfig * Attempting to use updated wasm client api * Removing dead code * Exposed other messages types in wasm client * cleanup in js-example * Changed 'self_address' to be a method call * Removed needless borrow when cloning an Arc * Improving arguments in 'on_message' callback * fixed wasm-client dependency/features
31 lines
1.0 KiB
Rust
31 lines
1.0 KiB
Rust
// Copyright 2022 - Nym Technologies SA <contact@nymtech.net>
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
use client_core::client::base_client::ClientInput;
|
|
use client_core::client::inbound_messages::InputMessage;
|
|
use js_sys::Promise;
|
|
use std::sync::Arc;
|
|
use wasm_bindgen::JsValue;
|
|
use wasm_bindgen_futures::future_to_promise;
|
|
|
|
// defining helper trait as we could directly call the method on the wrapper
|
|
pub(crate) trait InputSender {
|
|
fn send_message(&self, message: InputMessage) -> Promise;
|
|
}
|
|
|
|
impl InputSender for Arc<ClientInput> {
|
|
fn send_message(&self, message: InputMessage) -> Promise {
|
|
let this = Arc::clone(self);
|
|
future_to_promise(async move {
|
|
match this.input_sender.send(message).await {
|
|
Ok(_) => Ok(JsValue::null()),
|
|
Err(_) => {
|
|
let js_error =
|
|
js_sys::Error::new("InputMessageReceiver has stopped receiving!");
|
|
Err(JsValue::from(js_error))
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|