use derive_more::with_trait::From;
use js_sys::Promise;
use wasm_bindgen::prelude::*;
use wasm_bindgen_futures::future_to_promise;
use super::Error;
use crate::rpc;
#[wasm_bindgen]
#[derive(Clone, Debug, From)]
pub struct ReconnectHandle(rpc::ReconnectHandleImpl);
#[wasm_bindgen]
impl ReconnectHandle {
pub fn reconnect_with_delay(&self, delay_ms: u32) -> Promise {
let this = self.0.clone();
future_to_promise(async move {
this.reconnect_with_delay(delay_ms).await.map_err(Error::from)?;
Ok(JsValue::UNDEFINED)
})
}
pub fn reconnect_with_backoff(
&self,
starting_delay_ms: u32,
multiplier: f32,
max_delay: u32,
max_elapsed_time_ms: Option<u32>,
) -> Promise {
let this = self.0.clone();
future_to_promise(async move {
this.reconnect_with_backoff(
starting_delay_ms,
multiplier.into(),
max_delay,
max_elapsed_time_ms,
)
.await
.map_err(Error::from)?;
Ok(JsValue::UNDEFINED)
})
}
}