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.
This commit is contained in:
edouardparis 2024-02-06 12:56:58 +01:00
parent c268c3a093
commit fa4483a4b7
5 changed files with 21 additions and 12 deletions

View File

@ -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(),

View File

@ -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;
}

View File

@ -79,6 +79,16 @@ impl State for PsbtsPanel {
message: Message,
) -> Command<Message> {
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) => {

View File

@ -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;
}

View File

@ -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()
)