From c268c3a093594b76d424d935840c8c5ef6c83482 Mon Sep 17 00:00:00 2001 From: edouardparis Date: Fri, 2 Feb 2024 17:12:15 +0100 Subject: [PATCH] gui: load receive panel only once --- gui/src/app/state/receive.rs | 44 +++++++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 11 deletions(-) diff --git a/gui/src/app/state/receive.rs b/gui/src/app/state/receive.rs index cd4bfca0..0d34c475 100644 --- a/gui/src/app/state/receive.rs +++ b/gui/src/app/state/receive.rs @@ -34,6 +34,12 @@ pub struct Addresses { labels: HashMap, } +impl Addresses { + fn is_empty(&self) -> bool { + self.list.is_empty() + } +} + impl Labelled for Addresses { fn labelled(&self) -> Vec { self.list @@ -154,7 +160,18 @@ impl State for ReceivePanel { )); Command::none() } - Message::View(view::Message::Next) => self.load(daemon), + Message::View(view::Message::Next) => { + let daemon = daemon.clone(); + Command::perform( + async move { + daemon + .get_new_address() + .map(|res| (res.address, res.derivation_index)) + .map_err(|e| e.into()) + }, + Message::ReceiveAddress, + ) + } _ => self .modal .as_mut() @@ -164,16 +181,21 @@ impl State for ReceivePanel { } fn load(&self, daemon: Arc) -> Command { - let daemon = daemon.clone(); - Command::perform( - async move { - daemon - .get_new_address() - .map(|res| (res.address, res.derivation_index)) - .map_err(|e| e.into()) - }, - Message::ReceiveAddress, - ) + // Fill at least with one address, user will then use the generate button. + if self.addresses.is_empty() { + let daemon = daemon.clone(); + Command::perform( + async move { + daemon + .get_new_address() + .map(|res| (res.address, res.derivation_index)) + .map_err(|e| e.into()) + }, + Message::ReceiveAddress, + ) + } else { + Command::none() + } } }