diff --git a/liana-gui/src/app/state/settings/bitcoind.rs b/liana-gui/src/app/state/settings/bitcoind.rs index 9be01bb5..16d92953 100644 --- a/liana-gui/src/app/state/settings/bitcoind.rs +++ b/liana-gui/src/app/state/settings/bitcoind.rs @@ -5,7 +5,7 @@ use std::str::FromStr; use std::sync::Arc; use chrono::{NaiveDate, Utc}; -use iced::Command; +use iced::{clipboard, Command}; use tracing::info; use liana::miniscript::bitcoin::Network; @@ -361,6 +361,7 @@ impl BitcoindSettings { }); } } + view::SettingsEditMessage::Clipboard(text) => return clipboard::write(text), }; Command::none() } @@ -468,6 +469,7 @@ impl ElectrumSettings { }); } } + view::SettingsEditMessage::Clipboard(text) => return clipboard::write(text), _ => {} }; Command::none() diff --git a/liana-gui/src/app/view/message.rs b/liana-gui/src/app/view/message.rs index 2a3581f3..e8bbd11f 100644 --- a/liana-gui/src/app/view/message.rs +++ b/liana-gui/src/app/view/message.rs @@ -91,6 +91,7 @@ pub enum SettingsEditMessage { BitcoindRpcAuthTypeSelected(RpcAuthType), Cancel, Confirm, + Clipboard(String), } #[derive(Debug, Clone)] diff --git a/liana-gui/src/app/view/settings.rs b/liana-gui/src/app/view/settings.rs index 72d986e0..39be3cf6 100644 --- a/liana-gui/src/app/view/settings.rs +++ b/liana-gui/src/app/view/settings.rs @@ -504,11 +504,23 @@ pub fn bitcoind<'a>( let mut col_fields = Column::new(); for (k, v) in rows { - col_fields = col_fields.push( + col_fields = col_fields.push({ + let t = if k == "Password:" { + "*".to_string().repeat(v.len()) + } else { + v.clone() + }; Row::new() .push(Container::new(text(k).bold().small()).width(Length::Fill)) - .push(text(v).small()), - ); + .push(text(t).small()) + .push(Space::with_width(10)) + .push( + Button::new(icon::clipboard_icon()) + .style(theme::Button::TransparentBorder) + .on_press(SettingsEditMessage::Clipboard(v.to_string())), + ) + .align_items(Alignment::Center) + }); } card::simple(Container::new( @@ -685,7 +697,14 @@ pub fn electrum<'a>( col_fields = col_fields.push( Row::new() .push(Container::new(text(k).bold().small()).width(Length::Fill)) - .push(text(v).small()), + .push(text(v.clone()).small()) + .push(Space::with_width(10)) + .push( + Button::new(icon::clipboard_icon()) + .style(theme::Button::TransparentBorder) + .on_press(SettingsEditMessage::Clipboard(v.to_string())), + ) + .align_items(Alignment::Center), ); }