From 5dcecc5542f3feeb989d40de2c8cc3063f1409d5 Mon Sep 17 00:00:00 2001 From: pythcoiner Date: Wed, 5 Mar 2025 04:55:27 +0100 Subject: [PATCH] gui: make ExportModal.daemon optionnal --- liana-gui/src/app/state/export.rs | 7 +++++-- liana-gui/src/app/state/settings/mod.rs | 8 ++++---- liana-gui/src/app/state/settings/wallet.rs | 4 ++-- liana-gui/src/app/state/transactions.rs | 2 +- liana-gui/src/export.rs | 4 ++-- 5 files changed, 14 insertions(+), 11 deletions(-) diff --git a/liana-gui/src/app/state/export.rs b/liana-gui/src/app/state/export.rs index 89297779..4dc54fec 100644 --- a/liana-gui/src/app/state/export.rs +++ b/liana-gui/src/app/state/export.rs @@ -19,13 +19,16 @@ pub struct ExportModal { handle: Option>>>, state: ImportExportState, error: Option, - daemon: Arc, + daemon: Option>, import_export_type: ImportExportType, } impl ExportModal { #[allow(clippy::new_without_default)] - pub fn new(daemon: Arc, export_type: ImportExportType) -> Self { + pub fn new( + daemon: Option>, + export_type: ImportExportType, + ) -> Self { Self { path: None, handle: None, diff --git a/liana-gui/src/app/state/settings/mod.rs b/liana-gui/src/app/state/settings/mod.rs index 9a22cd9d..69b3117d 100644 --- a/liana-gui/src/app/state/settings/mod.rs +++ b/liana-gui/src/app/state/settings/mod.rs @@ -236,7 +236,7 @@ impl State for ImportExportSettingsState { Message::View(view::Message::Settings(view::SettingsMessage::ExportDescriptor)) => { if self.modal.is_none() { let modal = ExportModal::new( - daemon, + Some(daemon), ImportExportType::Descriptor(self.wallet.main_descriptor.clone()), ); launch!(self, modal); @@ -244,13 +244,13 @@ impl State for ImportExportSettingsState { } Message::View(view::Message::Settings(view::SettingsMessage::ExportTransactions)) => { if self.modal.is_none() { - let modal = ExportModal::new(daemon, ImportExportType::Transactions); + let modal = ExportModal::new(Some(daemon), ImportExportType::Transactions); launch!(self, modal); } } Message::View(view::Message::Settings(view::SettingsMessage::ExportLabels)) => { if self.modal.is_none() { - let modal = ExportModal::new(daemon, ImportExportType::ExportLabels); + let modal = ExportModal::new(Some(daemon), ImportExportType::ExportLabels); launch!(self, modal); } } @@ -278,7 +278,7 @@ impl State for ImportExportSettingsState { } } Message::View(view::Message::Settings(view::SettingsMessage::ExportBackup(backup))) => { - let modal = ExportModal::new(daemon, ImportExportType::ExportBackup(backup)); + let modal = ExportModal::new(Some(daemon), ImportExportType::ExportBackup(backup)); launch!(self, modal); } Message::View(view::Message::Settings(view::SettingsMessage::ImportWallet)) => { diff --git a/liana-gui/src/app/state/settings/wallet.rs b/liana-gui/src/app/state/settings/wallet.rs index 21e546d6..1315f373 100644 --- a/liana-gui/src/app/state/settings/wallet.rs +++ b/liana-gui/src/app/state/settings/wallet.rs @@ -252,7 +252,7 @@ impl State for WalletSettingsState { if self.modal.is_none() { let modal = // ExportModal::new(Some(daemon), ImportExportType::ExportBackup(backup)); - ExportModal::new(daemon, ImportExportType::ExportBackup(backup)); + ExportModal::new(Some(daemon), ImportExportType::ExportBackup(backup)); let launch = modal.launch(); self.modal = Modal::ImportExport(modal); launch @@ -264,7 +264,7 @@ impl State for WalletSettingsState { if self.modal.is_none() { let modal = ExportModal::new( // Some(daemon), - daemon, + Some(daemon), ImportExportType::Descriptor(self.wallet.main_descriptor.clone()), ); let launch = modal.launch(); diff --git a/liana-gui/src/app/state/transactions.rs b/liana-gui/src/app/state/transactions.rs index a871cc8f..03970daf 100644 --- a/liana-gui/src/app/state/transactions.rs +++ b/liana-gui/src/app/state/transactions.rs @@ -269,7 +269,7 @@ impl State for TransactionsPanel { Message::View(view::Message::ImportExport(ImportExportMessage::Open)) => { if let TransactionsModal::None = &self.modal { self.modal = TransactionsModal::Export(ExportModal::new( - daemon, + Some(daemon), ImportExportType::Transactions, )); if let TransactionsModal::Export(m) = &self.modal { diff --git a/liana-gui/src/export.rs b/liana-gui/src/export.rs index 7b114663..6e546b90 100644 --- a/liana-gui/src/export.rs +++ b/liana-gui/src/export.rs @@ -260,12 +260,12 @@ impl Export { } pub fn export_subscription( - daemon: Arc, + daemon: Option>, path: PathBuf, export_type: ImportExportType, ) -> impl Stream { iced::stream::channel(100, move |mut output| async move { - let mut state = Export::new(Some(daemon), Box::new(path), export_type); + let mut state = Export::new(daemon, Box::new(path), export_type); loop { match state.state() { Status::Init => {