From 85024d64bdf3133c9ef4f593ef9070df0958e702 Mon Sep 17 00:00:00 2001 From: pythcoiner Date: Sun, 2 Mar 2025 12:13:22 +0100 Subject: [PATCH] gui: ExportModal.update() pass an ExportMessage instead app::message::Message in order to be used in a more generic way --- liana-gui/src/app/state/export.rs | 72 ++++++++++++------------- liana-gui/src/app/state/transactions.rs | 10 +++- 2 files changed, 41 insertions(+), 41 deletions(-) diff --git a/liana-gui/src/app/state/export.rs b/liana-gui/src/app/state/export.rs index a517c0ee..193e6e3c 100644 --- a/liana-gui/src/app/state/export.rs +++ b/liana-gui/src/app/state/export.rs @@ -9,7 +9,7 @@ use tokio::task::JoinHandle; use crate::{ app::{ - message::Message, + self, view::{self, export::export_modal}, }, daemon::Daemon, @@ -37,53 +37,47 @@ impl ExportModal { } } - pub fn launch(&self) -> Task { + pub fn launch(&self) -> Task { Task::perform(get_path(), |m| { - Message::View(view::Message::Export(ExportMessage::Path(m))) + app::message::Message::View(view::Message::Export(ExportMessage::Path(m))) }) } - pub fn update(&mut self, message: Message) -> Task { - if let Message::View(view::Message::Export(m)) = message { - match m { - ExportMessage::ExportProgress(m) => match m { - ExportProgress::Started(handle) => { - self.handle = Some(handle); - self.state = ExportState::Progress(0.0); - } - ExportProgress::Progress(p) => { - if let ExportState::Progress(_) = self.state { - self.state = ExportState::Progress(p); - } - } - ExportProgress::Finished | ExportProgress::Ended => { - self.state = ExportState::Ended - } - ExportProgress::Error(e) => self.error = Some(e), - ExportProgress::None => {} - }, - ExportMessage::TimedOut => { - self.stop(ExportState::TimedOut); + pub fn update(&mut self, message: ExportMessage) -> Task { + match message { + ExportMessage::ExportProgress(m) => match m { + ExportProgress::Started(handle) => { + self.handle = Some(handle); + self.state = ExportState::Progress(0.0); } - ExportMessage::UserStop => { - self.stop(ExportState::Aborted); - } - ExportMessage::Path(p) => { - if let Some(path) = p { - self.path = Some(path); - self.start(); - } else { - return Task::perform(async {}, |_| { - Message::View(view::Message::Export(ExportMessage::Close)) - }); + ExportProgress::Progress(p) => { + if let ExportState::Progress(_) = self.state { + self.state = ExportState::Progress(p); } } - ExportMessage::Close | ExportMessage::Open => { /* unreachable */ } + ExportProgress::Finished | ExportProgress::Ended => self.state = ExportState::Ended, + ExportProgress::Error(e) => self.error = Some(e), + ExportProgress::None => {} + }, + ExportMessage::TimedOut => { + self.stop(ExportState::TimedOut); } - Task::none() - } else { - Task::none() + ExportMessage::UserStop => { + self.stop(ExportState::Aborted); + } + ExportMessage::Path(p) => { + if let Some(path) = p { + self.path = Some(path); + self.start(); + } else { + return Task::perform(async {}, |_| { + app::message::Message::View(view::Message::Export(ExportMessage::Close)) + }); + } + } + ExportMessage::Close | ExportMessage::Open => { /* unreachable */ } } + Task::none() } pub fn view<'a>(&'a self, content: Element<'a, view::Message>) -> Element { let modal = Modal::new( diff --git a/liana-gui/src/app/state/transactions.rs b/liana-gui/src/app/state/transactions.rs index b01573e9..a8a0d4fd 100644 --- a/liana-gui/src/app/state/transactions.rs +++ b/liana-gui/src/app/state/transactions.rs @@ -279,10 +279,16 @@ impl State for TransactionsPanel { self.modal = TransactionsModal::None; } } - _ => { + ref msg => { return match &mut self.modal { TransactionsModal::CreateRbf(modal) => modal.update(daemon, _cache, message), - TransactionsModal::Export(modal) => modal.update(message), + TransactionsModal::Export(modal) => { + if let Message::View(view::Message::Export(m)) = msg { + modal.update(m.clone()) + } else { + Task::none() + } + } TransactionsModal::None => Task::none(), }; }