diff --git a/gui/Cargo.lock b/gui/Cargo.lock index 1d661828..e7b9a284 100644 --- a/gui/Cargo.lock +++ b/gui/Cargo.lock @@ -2624,7 +2624,7 @@ dependencies = [ [[package]] name = "liana" version = "6.0.0" -source = "git+https://github.com/wizardsardine/liana?branch=master#c6e3053edf353bd9e234fab6942d02d72b99e196" +source = "git+https://github.com/wizardsardine/liana?branch=master#4dd0fd369265f49284e4a9a1c83fe27cdda55b9a" dependencies = [ "backtrace", "bdk_coin_select", diff --git a/gui/src/app/state/settings/bitcoind.rs b/gui/src/app/state/settings/bitcoind.rs index 35d36ebc..ebdd45f3 100644 --- a/gui/src/app/state/settings/bitcoind.rs +++ b/gui/src/app/state/settings/bitcoind.rs @@ -453,7 +453,8 @@ impl ElectrumSettings { } view::SettingsEditMessage::FieldEdited(field, value) => { if !self.processing && field == "address" { - self.addr.value = value + self.addr.valid = crate::node::electrum::is_electrum_address_valid(&value); + self.addr.value = value; } } view::SettingsEditMessage::Confirm => { diff --git a/gui/src/installer/step/node/electrum.rs b/gui/src/installer/step/node/electrum.rs index 8adfbd5a..8de92b79 100644 --- a/gui/src/installer/step/node/electrum.rs +++ b/gui/src/installer/step/node/electrum.rs @@ -35,23 +35,9 @@ impl DefineElectrum { match msg { message::DefineElectrum::ConfigFieldEdited(field, value) => match field { ConfigField::Address => { - let value_noprefix = if value.starts_with("ssl://") { - value.replacen("ssl://", "", 1) - } else { - value.replacen("tcp://", "", 1) - }; - let noprefix_parts: Vec<_> = value_noprefix.split(':').collect(); self.address.value.clone_from(&value); // save the value including any prefix - self.address.valid = noprefix_parts.len() == 2 - && !noprefix_parts - .first() - .expect("there are two parts") - .is_empty() - && noprefix_parts - .last() - .expect("there are two parts") - .parse::() // check it is a port - .is_ok(); + self.address.valid = + crate::node::electrum::is_electrum_address_valid(&value); } }, }; diff --git a/gui/src/node/electrum.rs b/gui/src/node/electrum.rs index 97c563a8..11ca4c39 100644 --- a/gui/src/node/electrum.rs +++ b/gui/src/node/electrum.rs @@ -12,3 +12,22 @@ impl fmt::Display for ConfigField { } } } + +pub fn is_electrum_address_valid(value: &str) -> bool { + let value_noprefix = if value.starts_with("ssl://") { + value.replacen("ssl://", "", 1) + } else { + value.replacen("tcp://", "", 1) + }; + let noprefix_parts: Vec<_> = value_noprefix.split(':').collect(); + noprefix_parts.len() == 2 + && !noprefix_parts + .first() + .expect("there are two parts") + .is_empty() + && noprefix_parts + .last() + .expect("there are two parts") + .parse::() // check it is a port + .is_ok() +}