From fa4483a4b71ceb17463e89a27d1337c3cfc4d20d Mon Sep 17 00:00:00 2001 From: edouardparis Date: Tue, 6 Feb 2024 12:56:58 +0100 Subject: [PATCH] gui: add reload cycle to reset state When user clicks on the sidebar menu of the current panel, he expects the view to reset to its initial state without modal of transaction detail for example. --- gui/src/app/mod.rs | 9 --------- gui/src/app/state/mod.rs | 4 ++++ gui/src/app/state/psbts.rs | 10 ++++++++++ gui/src/app/state/transactions.rs | 4 ++++ gui/src/app/view/mod.rs | 6 +++--- 5 files changed, 21 insertions(+), 12 deletions(-) diff --git a/gui/src/app/mod.rs b/gui/src/app/mod.rs index 7df2a417..818de204 100644 --- a/gui/src/app/mod.rs +++ b/gui/src/app/mod.rs @@ -168,15 +168,6 @@ impl App { _ => PsbtsPanel::new(self.wallet.clone(), &self.cache.spend_txs).into(), }; } - menu::Menu::CreateSpendTx => { - self.panels.create_spend = CreateSpendPanel::new( - self.wallet.clone(), - &self.cache.coins, - self.cache.blockheight as u32, - self.cache.network, - ) - .into(); - } menu::Menu::RefreshCoins(preselected) => { self.panels.create_spend = CreateSpendPanel::new_self_send( self.wallet.clone(), diff --git a/gui/src/app/state/mod.rs b/gui/src/app/state/mod.rs index 1126f62f..7abf1741 100644 --- a/gui/src/app/state/mod.rs +++ b/gui/src/app/state/mod.rs @@ -210,6 +210,10 @@ impl State for Home { } }; } + Message::View(view::Message::Reload) => { + self.selected_event = None; + return self.load(daemon); + } Message::View(view::Message::Close) => { self.selected_event = None; } diff --git a/gui/src/app/state/psbts.rs b/gui/src/app/state/psbts.rs index 943eb6b2..a87ece79 100644 --- a/gui/src/app/state/psbts.rs +++ b/gui/src/app/state/psbts.rs @@ -79,6 +79,16 @@ impl State for PsbtsPanel { message: Message, ) -> Command { match message { + Message::View(view::Message::Reload) => { + if self.selected_tx.is_some() { + self.selected_tx = None; + return self.load(daemon); + } + if self.import_tx.is_some() { + self.import_tx = None; + return self.load(daemon); + } + } Message::SpendTxs(res) => match res { Err(e) => self.warning = Some(e), Ok(txs) => { diff --git a/gui/src/app/state/transactions.rs b/gui/src/app/state/transactions.rs index c8349754..cc52a7ed 100644 --- a/gui/src/app/state/transactions.rs +++ b/gui/src/app/state/transactions.rs @@ -121,6 +121,10 @@ impl State for TransactionsPanel { self.warning = e.into(); } }, + Message::View(view::Message::Reload) => { + self.selected_tx = None; + return self.load(daemon); + } Message::View(view::Message::Close) => { self.selected_tx = None; } diff --git a/gui/src/app/view/mod.rs b/gui/src/app/view/mod.rs index 73887fa4..71879700 100644 --- a/gui/src/app/view/mod.rs +++ b/gui/src/app/view/mod.rs @@ -45,7 +45,7 @@ pub fn sidebar<'a>(menu: &Menu, cache: &'a Cache) -> Container<'a, Message> { let home_button = if *menu == Menu::Home { row!( button::menu_active(Some(home_icon()), "Home") - .on_press(Message::Menu(Menu::Home)) + .on_press(Message::Reload) .width(iced::Length::Fill), menu_green_bar(), ) @@ -58,7 +58,7 @@ pub fn sidebar<'a>(menu: &Menu, cache: &'a Cache) -> Container<'a, Message> { let transactions_button = if *menu == Menu::Transactions { row!( button::menu_active(Some(history_icon()), "Transactions") - .on_press(Message::Menu(Menu::Transactions)) + .on_press(Message::Reload) .width(iced::Length::Fill), menu_green_bar() ) @@ -85,7 +85,7 @@ pub fn sidebar<'a>(menu: &Menu, cache: &'a Cache) -> Container<'a, Message> { let psbt_button = if *menu == Menu::PSBTs { row!( button::menu_active(Some(history_icon()), "PSBTs") - .on_press(Message::Menu(Menu::PSBTs)) + .on_press(Message::Reload) .width(iced::Length::Fill), menu_green_bar() )