Merge #655: check imported descriptor network
7ad12c50db52309c5a22e7fe52ca2e3018f8c178 check imported descriptor network (edouard) Pull request description: close #337 ACKs for top commit: edouardparis: Self-ACK 7ad12c50db52309c5a22e7fe52ca2e3018f8c178 Tree-SHA512: d760540fedbdfc4eff4ff8c34305a6c98d5f9817c981289903e11f7c536fb0dedf490f1eb72ccaa392f02db8b28f8c19f9edc386b5cb8afbaffa0e4aa59c49f3
This commit is contained in:
commit
52f3ac6a09
@ -1250,6 +1250,20 @@ impl ImportDescriptor {
|
||||
error: None,
|
||||
}
|
||||
}
|
||||
|
||||
fn check_descriptor(&mut self) {
|
||||
if !self.imported_descriptor.value.is_empty() {
|
||||
if let Ok(desc) = LianaDescriptor::from_str(&self.imported_descriptor.value) {
|
||||
if self.network == Network::Bitcoin {
|
||||
self.imported_descriptor.valid = desc.all_xpubs_net_is(self.network);
|
||||
} else {
|
||||
self.imported_descriptor.valid = desc.all_xpubs_net_is(Network::Testnet);
|
||||
}
|
||||
} else {
|
||||
self.imported_descriptor.valid = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Step for ImportDescriptor {
|
||||
@ -1262,10 +1276,11 @@ impl Step for ImportDescriptor {
|
||||
let mut network_datadir = self.data_dir.clone().unwrap();
|
||||
network_datadir.push(self.network.to_string());
|
||||
self.network_valid = !network_datadir.exists();
|
||||
self.check_descriptor();
|
||||
}
|
||||
Message::DefineDescriptor(message::DefineDescriptor::ImportDescriptor(desc)) => {
|
||||
self.imported_descriptor.value = desc;
|
||||
self.imported_descriptor.valid = true;
|
||||
self.check_descriptor();
|
||||
}
|
||||
_ => {}
|
||||
};
|
||||
@ -1287,9 +1302,17 @@ impl Step for ImportDescriptor {
|
||||
// descriptor forms for import or creation cannot be both empty or filled.
|
||||
if !self.imported_descriptor.value.is_empty() {
|
||||
if let Ok(desc) = LianaDescriptor::from_str(&self.imported_descriptor.value) {
|
||||
self.imported_descriptor.valid = true;
|
||||
ctx.descriptor = Some(desc);
|
||||
true
|
||||
if self.network == Network::Bitcoin {
|
||||
self.imported_descriptor.valid = desc.all_xpubs_net_is(self.network);
|
||||
} else {
|
||||
self.imported_descriptor.valid = desc.all_xpubs_net_is(Network::Testnet);
|
||||
}
|
||||
if self.imported_descriptor.valid {
|
||||
ctx.descriptor = Some(desc);
|
||||
true
|
||||
} else {
|
||||
false
|
||||
}
|
||||
} else {
|
||||
self.imported_descriptor.valid = false;
|
||||
false
|
||||
|
||||
@ -409,13 +409,15 @@ pub fn import_descriptor<'a>(
|
||||
})
|
||||
.push(col_descriptor),
|
||||
)
|
||||
.push(if imported_descriptor.value.is_empty() {
|
||||
button::primary(None, "Next").width(Length::Fixed(200.0))
|
||||
} else {
|
||||
button::primary(None, "Next")
|
||||
.width(Length::Fixed(200.0))
|
||||
.on_press(Message::Next)
|
||||
})
|
||||
.push(
|
||||
if imported_descriptor.value.is_empty() || !imported_descriptor.valid {
|
||||
button::primary(None, "Next").width(Length::Fixed(200.0))
|
||||
} else {
|
||||
button::primary(None, "Next")
|
||||
.width(Length::Fixed(200.0))
|
||||
.on_press(Message::Next)
|
||||
},
|
||||
)
|
||||
.push_maybe(error.map(|e| card::error("Invalid descriptor", e.to_string())))
|
||||
.spacing(50),
|
||||
true,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user