diff --git a/gui/src/app/state/mod.rs b/gui/src/app/state/mod.rs index 59a90fda..121bb8c3 100644 --- a/gui/src/app/state/mod.rs +++ b/gui/src/app/state/mod.rs @@ -75,6 +75,7 @@ impl State for Home { false, self.warning.as_ref(), view::home::event_view(cache, &self.events[i]), + None::>, ); } view::dashboard( diff --git a/gui/src/app/state/spend/step.rs b/gui/src/app/state/spend/step.rs index b2c7a0ed..1342fd0b 100644 --- a/gui/src/app/state/spend/step.rs +++ b/gui/src/app/state/spend/step.rs @@ -94,6 +94,12 @@ impl Step for ChooseRecipients { .enumerate() .map(|(i, recipient)| recipient.view(i).map(view::Message::CreateSpend)) .collect(), + Amount::from_sat( + self.recipients + .iter() + .map(|r| r.amount().unwrap_or(0_u64)) + .sum(), + ), !self.recipients.iter().any(|recipient| !recipient.valid()), ) } diff --git a/gui/src/app/view/mod.rs b/gui/src/app/view/mod.rs index 1b90c8e8..781441a0 100644 --- a/gui/src/app/view/mod.rs +++ b/gui/src/app/view/mod.rs @@ -273,10 +273,11 @@ fn main_section<'a, T: 'a>(menu: widget::Container<'a, T>) -> widget::Container< .height(Length::Fill) } -pub fn modal<'a, T: Into>>( +pub fn modal<'a, T: Into>, F: Into>>( is_previous: bool, warning: Option<&Error>, content: T, + fixed_footer: Option, ) -> Element<'a, Message> { Column::new() .push(warn(warning)) @@ -299,6 +300,7 @@ pub fn modal<'a, T: Into>>( .style(container::Style::Background), ) .push(modal_section(Container::new(scrollable(content)))) + .push_maybe(fixed_footer) .width(Length::Fill) .height(Length::Fill) .into() @@ -306,7 +308,6 @@ pub fn modal<'a, T: Into>>( fn modal_section<'a, T: 'a>(menu: widget::Container<'a, T>) -> widget::Container<'a, T> { Container::new(menu.max_width(1500)) - .padding(20) .style(container::Style::Background) .center_x() .width(Length::Fill) diff --git a/gui/src/app/view/spend/mod.rs b/gui/src/app/view/spend/mod.rs index a7fe868b..d7f3e0df 100644 --- a/gui/src/app/view/spend/mod.rs +++ b/gui/src/app/view/spend/mod.rs @@ -22,7 +22,7 @@ pub fn spend_view<'a>(spend_txs: &[SpendTx]) -> Element<'a, Message> { Column::new() .push( Row::new().push(Column::new().width(Length::Fill)).push( - button::primary(Some(icon::plus_icon()), "Create a new transaction") + button::primary(Some(icon::plus_icon()), "New transaction") .on_press(Message::Menu(Menu::CreateSpendTx)), ), ) diff --git a/gui/src/app/view/spend/step.rs b/gui/src/app/view/spend/step.rs index 36ea6c34..c3743117 100644 --- a/gui/src/app/view/spend/step.rs +++ b/gui/src/app/view/spend/step.rs @@ -25,6 +25,7 @@ use crate::{ pub fn choose_recipients_view( recipients: Vec>, + total_amount: Amount, is_valid: bool, ) -> Element { modal( @@ -42,17 +43,26 @@ pub fn choose_recipients_view( .max_width(1000) .spacing(10), ) - .push_maybe(if is_valid { - Some( - button::primary(None, "Next") - .on_press(Message::Next) - .width(Length::Units(100)), - ) - } else { - None - }) .spacing(20) .align_items(Alignment::Center), + Some( + Container::new( + Row::new() + .align_items(Alignment::Center) + .push( + Container::new(text(format!("{}", total_amount)).bold()) + .width(Length::Fill), + ) + .push(if is_valid { + button::primary(None, "Next") + .on_press(Message::Next) + .width(Length::Units(100)) + } else { + button::primary(None, "Next").width(Length::Units(100)) + }), + ) + .padding(20), + ), ) } @@ -124,6 +134,7 @@ pub fn choose_feerate_view<'a>( }) .spacing(20) .align_items(Alignment::Center), + None::>, ) } @@ -171,6 +182,7 @@ pub fn choose_coins_view<'a>( }) .spacing(20) .align_items(Alignment::Center), + None::>, ) }