diff --git a/gui/src/app/mod.rs b/gui/src/app/mod.rs index d37142ba..82720a95 100644 --- a/gui/src/app/mod.rs +++ b/gui/src/app/mod.rs @@ -129,13 +129,13 @@ impl App { data_dir: PathBuf, internal_bitcoind: Option, ) -> (App, Command) { - let panels = Panels::new( + let mut panels = Panels::new( &cache, wallet.clone(), data_dir.clone(), internal_bitcoind.as_ref(), ); - let cmd = panels.home.load(daemon.clone()); + let cmd = panels.home.reload(daemon.clone()); ( Self { panels, @@ -180,7 +180,7 @@ impl App { _ => {} }; self.panels.current = menu; - self.panels.current().load(self.daemon.clone()) + self.panels.current_mut().reload(self.daemon.clone()) } pub fn subscription(&self) -> Subscription { diff --git a/gui/src/app/state/coins.rs b/gui/src/app/state/coins.rs index 12342fb1..fc9b49d7 100644 --- a/gui/src/app/state/coins.rs +++ b/gui/src/app/state/coins.rs @@ -150,7 +150,7 @@ impl State for CoinsPanel { Command::none() } - fn load(&self, daemon: Arc) -> Command { + fn reload(&mut self, daemon: Arc) -> Command { let daemon1 = daemon.clone(); let daemon2 = daemon.clone(); Command::batch(vec![ diff --git a/gui/src/app/state/mod.rs b/gui/src/app/state/mod.rs index 7abf1741..df2c9b54 100644 --- a/gui/src/app/state/mod.rs +++ b/gui/src/app/state/mod.rs @@ -44,7 +44,7 @@ pub trait State { fn subscription(&self) -> Subscription { Subscription::none() } - fn load(&self, _daemon: Arc) -> Command { + fn reload(&mut self, _daemon: Arc) -> Command { Command::none() } } @@ -211,8 +211,7 @@ impl State for Home { }; } Message::View(view::Message::Reload) => { - self.selected_event = None; - return self.load(daemon); + return self.reload(daemon); } Message::View(view::Message::Close) => { self.selected_event = None; @@ -263,7 +262,8 @@ impl State for Home { Command::none() } - fn load(&self, daemon: Arc) -> Command { + fn reload(&mut self, daemon: Arc) -> Command { + self.selected_event = None; let daemon1 = daemon.clone(); let daemon2 = daemon.clone(); let daemon3 = daemon.clone(); diff --git a/gui/src/app/state/psbts.rs b/gui/src/app/state/psbts.rs index a87ece79..7a385580 100644 --- a/gui/src/app/state/psbts.rs +++ b/gui/src/app/state/psbts.rs @@ -79,15 +79,8 @@ 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::View(view::Message::Reload) | Message::View(view::Message::Close) => { + return self.reload(daemon); } Message::SpendTxs(res) => match res { Err(e) => self.warning = Some(e), @@ -101,16 +94,6 @@ impl State for PsbtsPanel { self.import_tx = Some(ImportPsbtModal::new()); } } - Message::View(view::Message::Close) => { - 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::View(view::Message::Select(i)) => { if let Some(tx) = self.spend_txs.get(i) { let tx = psbt::PsbtState::new(self.wallet.clone(), tx.clone(), true); @@ -140,7 +123,9 @@ impl State for PsbtsPanel { } } - fn load(&self, daemon: Arc) -> Command { + fn reload(&mut self, daemon: Arc) -> Command { + self.selected_tx = None; + self.import_tx = None; let daemon = daemon.clone(); Command::perform( async move { daemon.list_spend_transactions(None).map_err(|e| e.into()) }, diff --git a/gui/src/app/state/receive.rs b/gui/src/app/state/receive.rs index 0d34c475..e5dac8ce 100644 --- a/gui/src/app/state/receive.rs +++ b/gui/src/app/state/receive.rs @@ -180,7 +180,7 @@ impl State for ReceivePanel { } } - fn load(&self, daemon: Arc) -> Command { + fn reload(&mut self, daemon: Arc) -> Command { // Fill at least with one address, user will then use the generate button. if self.addresses.is_empty() { let daemon = daemon.clone(); diff --git a/gui/src/app/state/recovery.rs b/gui/src/app/state/recovery.rs index 2e7811e8..087d32e3 100644 --- a/gui/src/app/state/recovery.rs +++ b/gui/src/app/state/recovery.rs @@ -192,7 +192,7 @@ impl State for RecoveryPanel { Command::none() } - fn load(&self, daemon: Arc) -> Command { + fn reload(&mut self, daemon: Arc) -> Command { let daemon = daemon.clone(); Command::perform( async move { diff --git a/gui/src/app/state/settings/bitcoind.rs b/gui/src/app/state/settings/bitcoind.rs index cf944660..83b13b9b 100644 --- a/gui/src/app/state/settings/bitcoind.rs +++ b/gui/src/app/state/settings/bitcoind.rs @@ -16,7 +16,7 @@ use liana::{ use liana_ui::{component::form, widget::Element}; use crate::{ - app::{cache::Cache, error::Error, message::Message, view, State}, + app::{cache::Cache, error::Error, message::Message, state::settings::State, view}, bitcoind::{RpcAuthType, RpcAuthValues}, daemon::Daemon, }; diff --git a/gui/src/app/state/settings/mod.rs b/gui/src/app/state/settings/mod.rs index 21cf2820..0788b459 100644 --- a/gui/src/app/state/settings/mod.rs +++ b/gui/src/app/state/settings/mod.rs @@ -55,14 +55,14 @@ impl State for SettingsState { ); self.setting .as_mut() - .map(|s| s.load(daemon)) + .map(|s| s.reload(daemon)) .unwrap_or_else(Command::none) } Message::View(view::Message::Settings(view::SettingsMessage::AboutSection)) => { self.setting = Some(AboutSettingsState::default().into()); self.setting .as_mut() - .map(|s| s.load(daemon)) + .map(|s| s.reload(daemon)) .unwrap_or_else(Command::none) } Message::View(view::Message::Settings(view::SettingsMessage::EditWalletSettings)) => { @@ -71,7 +71,7 @@ impl State for SettingsState { ); self.setting .as_mut() - .map(|s| s.load(daemon)) + .map(|s| s.reload(daemon)) .unwrap_or_else(Command::none) } _ => self @@ -97,6 +97,11 @@ impl State for SettingsState { view::settings::list(cache) } } + + fn reload(&mut self, _daemon: Arc) -> Command { + self.setting = None; + Command::none() + } } impl From for Box { @@ -145,7 +150,7 @@ impl State for AboutSettingsState { Command::none() } - fn load(&self, daemon: Arc) -> Command { + fn reload(&mut self, daemon: Arc) -> Command { Command::perform( async move { daemon.get_info().map_err(|e| e.into()) }, Message::Info, diff --git a/gui/src/app/state/settings/wallet.rs b/gui/src/app/state/settings/wallet.rs index 85128297..7af6a837 100644 --- a/gui/src/app/state/settings/wallet.rs +++ b/gui/src/app/state/settings/wallet.rs @@ -180,7 +180,7 @@ impl State for WalletSettingsState { } } - fn load(&self, daemon: Arc) -> Command { + fn reload(&mut self, daemon: Arc) -> Command { Command::perform( async move { daemon.get_info().map_err(|e| e.into()) }, Message::Info, diff --git a/gui/src/app/state/spend/mod.rs b/gui/src/app/state/spend/mod.rs index 4c39ef34..6a01a821 100644 --- a/gui/src/app/state/spend/mod.rs +++ b/gui/src/app/state/spend/mod.rs @@ -108,7 +108,7 @@ impl State for CreateSpendPanel { Command::none() } - fn load(&self, daemon: Arc) -> Command { + fn reload(&mut self, daemon: Arc) -> Command { let daemon1 = daemon.clone(); let daemon2 = daemon.clone(); Command::batch(vec![ diff --git a/gui/src/app/state/transactions.rs b/gui/src/app/state/transactions.rs index cc52a7ed..621c95d7 100644 --- a/gui/src/app/state/transactions.rs +++ b/gui/src/app/state/transactions.rs @@ -121,12 +121,8 @@ 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; + Message::View(view::Message::Reload) | Message::View(view::Message::Close) => { + return self.reload(daemon); } Message::View(view::Message::Select(i)) => { self.selected_tx = Some(i); @@ -229,7 +225,8 @@ impl State for TransactionsPanel { Command::none() } - fn load(&self, daemon: Arc) -> Command { + fn reload(&mut self, daemon: Arc) -> Command { + self.selected_tx = None; let daemon1 = daemon.clone(); let daemon2 = daemon.clone(); let daemon3 = daemon.clone(); diff --git a/gui/src/utils/sandbox.rs b/gui/src/utils/sandbox.rs index 7a408e0d..7a9b45f4 100644 --- a/gui/src/utils/sandbox.rs +++ b/gui/src/utils/sandbox.rs @@ -38,7 +38,7 @@ impl Sandbox { } pub async fn load(mut self, daemon: Arc, cache: &Cache) -> Self { - let cmd = self.state.load(daemon.clone()); + let cmd = self.state.reload(daemon.clone()); for action in cmd.actions() { if let Action::Future(f) = action { let msg = f.await;