Merge #485: Change recovery path view when no path is available

28856af82419b0ae32bc6d626c2c98e999afffec Change recovery path view when no path is available (edouard)

Pull request description:

  ![2023-05-07T16:03:15,137213217+02:00](https://user-images.githubusercontent.com/6933020/236682331-f869241f-c3ba-46e4-9177-5348150c1f2a.png)
  close #483

ACKs for top commit:
  edouardparis:
    Self-ACK 28856af82419b0ae32bc6d626c2c98e999afffec

Tree-SHA512: cc422676dd0ba1074c537f4b8696915c747e0414bc540cdf566415e796ee24a3a4bce8007f3d11b3ad4fdfa380da4c8d09175a93e60a7e74df23f48b66dd822d
This commit is contained in:
edouard 2023-05-07 16:20:18 +02:00
commit f2843cc064
No known key found for this signature in database
GPG Key ID: E65F7A089C20DC8F

View File

@ -13,6 +13,7 @@ use liana::miniscript::bitcoin::{
use liana_ui::{
component::{amount::*, button, form, text::*},
icon, theme,
util::*,
widget::*,
};
@ -25,6 +26,7 @@ pub fn recovery<'a>(
feerate: &form::Value<String>,
address: &'a form::Value<String>,
) -> Element<'a, Message> {
let no_recovery_paths = recovery_paths.is_empty();
Column::new()
.push(Space::with_height(Length::Units(100)))
.push(
@ -36,7 +38,9 @@ pub fn recovery<'a>(
.align_items(Alignment::Center)
.spacing(1),
)
.push(
.push(if no_recovery_paths {
Container::new(text("No recovery path is currently available"))
} else {
Container::new(
Column::new()
.spacing(10)
@ -46,53 +50,57 @@ pub fn recovery<'a>(
)))
.push(Column::with_children(recovery_paths).spacing(10)),
)
.padding(20),
)
.padding(20)
})
.push(Space::with_height(Length::Units(20)))
.push(
Column::new()
.push(text("Enter destination address and feerate:").bold())
.push(
Container::new(
form::Form::new("Address", address, move |msg| {
Message::CreateSpend(CreateSpendMessage::RecipientEdited(
0, "address", msg,
))
})
.warning("Invalid Bitcoin address")
.size(20)
.padding(10),
.push_maybe(if no_recovery_paths {
None
} else {
Some(
Column::new()
.push(text("Enter destination address and feerate:").bold())
.push(
Container::new(
form::Form::new("Address", address, move |msg| {
Message::CreateSpend(CreateSpendMessage::RecipientEdited(
0, "address", msg,
))
})
.warning("Invalid Bitcoin address")
.size(20)
.padding(10),
)
.width(Length::Units(250)),
)
.width(Length::Units(250)),
)
.push(
Container::new(
form::Form::new("42 (sats/vbyte)", feerate, move |msg| {
Message::CreateSpend(CreateSpendMessage::FeerateEdited(msg))
})
.warning("Invalid feerate")
.size(20)
.padding(10),
.push(
Container::new(
form::Form::new("42 (sats/vbyte)", feerate, move |msg| {
Message::CreateSpend(CreateSpendMessage::FeerateEdited(msg))
})
.warning("Invalid feerate")
.size(20)
.padding(10),
)
.width(Length::Units(250)),
)
.width(Length::Units(250)),
)
.push(
if feerate.valid
&& !feerate.value.is_empty()
&& address.valid
&& !address.value.is_empty()
&& selected_path.is_some()
{
button::primary(None, "Next")
.on_press(Message::Next)
.width(Length::Units(200))
} else {
button::primary(None, "Next").width(Length::Units(200))
},
)
.spacing(20)
.align_items(Alignment::Center),
)
.push(
if feerate.valid
&& !feerate.value.is_empty()
&& address.valid
&& !address.value.is_empty()
&& selected_path.is_some()
{
button::primary(None, "Next")
.on_press(Message::Next)
.width(Length::Units(200))
} else {
button::primary(None, "Next").width(Length::Units(200))
},
)
.spacing(20)
.align_items(Alignment::Center),
)
})
.align_items(Alignment::Center)
.spacing(20)
.into()