diff --git a/mint-manager/Cargo.toml b/mint-manager/Cargo.toml index 0438053..add9982 100644 --- a/mint-manager/Cargo.toml +++ b/mint-manager/Cargo.toml @@ -16,11 +16,11 @@ cashu-crab = { workspace = true } bitcoin = { workspace = true } log = "0.4.19" wasm-logger = "0.2.0" -web-sys = "0.3.64" +web-sys = { version = "0.3.64", features = ["HtmlSelectElement"] } gloo = "0.8.1" wasm-bindgen = "0.2.87" js-sys = "0.3.64" nostr = { workspace = true } gloo-storage = "0.2.2" anyhow = "1.0.71" -jwt-compact = { workspace = true } \ No newline at end of file +jwt-compact = { workspace = true } diff --git a/mint-manager/src/components/connect_peer.rs b/mint-manager/src/components/connect_peer.rs index 6bc0a77..e621bc9 100644 --- a/mint-manager/src/components/connect_peer.rs +++ b/mint-manager/src/components/connect_peer.rs @@ -119,7 +119,7 @@ impl Component for ConnectPeer { - + diff --git a/mint-manager/src/components/open_channel.rs b/mint-manager/src/components/open_channel.rs index 4fa1ddb..656cbd0 100644 --- a/mint-manager/src/components/open_channel.rs +++ b/mint-manager/src/components/open_channel.rs @@ -7,7 +7,7 @@ use gloo_net::http::Request; use log::warn; use node_manager_types::requests::OpenChannelRequest; use node_manager_types::responses::{self, ChannelInfo}; -use web_sys::{EventTarget, HtmlInputElement}; +use web_sys::{HtmlInputElement, HtmlSelectElement}; use yew::platform::spawn_local; use yew::prelude::*; @@ -29,6 +29,19 @@ async fn post_open_channel( Ok(()) } +async fn get_peers(jwt: &str, peers_callback: Callback>) -> Result<()> { + let peers: Vec = Request::get("http://127.0.0.1:8086/peers") + .header("Authorization", &format!("Bearer {}", jwt)) + .send() + .await? + .json() + .await?; + + peers_callback.emit(peers); + + Ok(()) +} + #[derive(PartialEq, Properties)] pub struct Props { pub jwt: String, @@ -39,25 +52,29 @@ pub struct Props { pub enum Msg { Submit, ChannelOpened(String), - Selected(String), + FetechedPeers(Vec), } #[derive(Default)] pub struct OpenChannel { - input_node_ref: NodeRef, ip_input_node_ref: NodeRef, port_input_node_ref: NodeRef, amount_input_node_ref: NodeRef, push_amount_input_node_ref: NodeRef, select_node_ref: NodeRef, - selected: Option, + peers: Vec, } impl Component for OpenChannel { type Message = Msg; type Properties = Props; - fn create(_ctx: &Context) -> Self { + fn create(ctx: &Context) -> Self { + let callback = ctx.link().callback(Msg::FetechedPeers); + let jwt = ctx.props().jwt.clone(); + spawn_local(async move { + get_peers(&jwt, callback).await.unwrap(); + }); Self::default() } @@ -65,10 +82,11 @@ impl Component for OpenChannel { match msg { Msg::Submit => { log::debug!("{:?}", self.select_node_ref.cast::()); + let pubkey = self - .input_node_ref - .cast::() - .map(|i| PublicKey::from_str(&i.value())); + .select_node_ref + .cast::() + .map(|p| PublicKey::from_str(&p.value())); let ip = self .ip_input_node_ref @@ -132,8 +150,8 @@ impl Component for OpenChannel { false } Msg::ChannelOpened(_response) => false, - Msg::Selected(sel) => { - log::debug! {"sel: {:?}", sel}; + Msg::FetechedPeers(peers) => { + self.peers = peers; true } } @@ -142,18 +160,6 @@ impl Component for OpenChannel { fn view(&self, ctx: &Context) -> Html { let on_submit = ctx.link().callback(|_| Msg::Submit); - let onchange = ctx.link().callback(|e: Event| { - log::debug!("{:?}", e); - - log::debug!("{:?}", e.current_target().unwrap()); - // Events can bubble so this listener might catch events from child - // elements which are not of type HtmlInputElement - - Msg::Submit - }); - - let t = vec!["a", "b", "c"]; - let onselect = ctx.link().callback(|_| Msg::Selected("t".to_string())); html! { <> @@ -162,22 +168,20 @@ impl Component for OpenChannel {
{ "Open Channel" }
- -
- +