openmina_node_common/service/rpc/
state.rs1#[cfg(target_family = "wasm")]
2use gloo_utils::format::JsValueSerdeExt;
3#[cfg(target_family = "wasm")]
4use node::rpc::*;
5#[cfg(target_family = "wasm")]
6use wasm_bindgen::prelude::*;
7
8use super::RpcSender;
9
10#[derive(Clone)]
11#[cfg_attr(target_family = "wasm", wasm_bindgen)]
12pub struct State {
13 #[allow(unused)]
14 sender: RpcSender,
15}
16
17impl State {
18 pub fn new(sender: RpcSender) -> Self {
19 Self { sender }
20 }
21}
22
23#[cfg(target_family = "wasm")]
24#[cfg_attr(target_family = "wasm", wasm_bindgen)]
25impl State {
26 pub async fn get(&self, filter: String) -> JsValue {
27 let res = self
28 .sender
29 .oneshot_request::<RpcStateGetResponse>(RpcRequest::StateGet(Some(filter)))
30 .await
31 .and_then(|v| v.ok());
32 res.map(|res| JsValue::from_serde(&res).unwrap_or_default())
33 .unwrap_or_default()
34 }
35
36 pub async fn peers(&self) -> JsValue {
37 let res = self
38 .sender
39 .oneshot_request::<RpcPeersGetResponse>(RpcRequest::PeersGet)
40 .await;
41 JsValue::from_serde(&res).unwrap_or_default()
42 }
43
44 pub async fn message_progress(&self) -> JsValue {
45 let res = self
46 .sender
47 .oneshot_request::<RpcMessageProgressResponse>(RpcRequest::MessageProgressGet)
48 .await;
49 JsValue::from_serde(&res).unwrap_or_default()
50 }
51}