diff --git a/gui/src/app/state/psbts.rs b/gui/src/app/state/psbts.rs index 3023ba34..0eee0ad5 100644 --- a/gui/src/app/state/psbts.rs +++ b/gui/src/app/state/psbts.rs @@ -120,7 +120,7 @@ impl State for PsbtsPanel { fn load(&self, daemon: Arc) -> Command { let daemon = daemon.clone(); Command::perform( - async move { daemon.list_spend_transactions().map_err(|e| e.into()) }, + async move { daemon.list_spend_transactions(None).map_err(|e| e.into()) }, Message::SpendTxs, ) } diff --git a/gui/src/daemon/mod.rs b/gui/src/daemon/mod.rs index 9191b9a9..a78fce48 100644 --- a/gui/src/daemon/mod.rs +++ b/gui/src/daemon/mod.rs @@ -87,11 +87,21 @@ pub trait Daemon: Debug { fn update_labels(&self, labels: &HashMap>) -> Result<(), DaemonError>; - fn list_spend_transactions(&self) -> Result, DaemonError> { + // List spend transactions, optionally filtered to the specified `txids`. + // Set `txids` to `None` for no filter (passing an empty slice returns no transactions). + fn list_spend_transactions( + &self, + txids: Option<&[Txid]>, + ) -> Result, DaemonError> { let info = self.get_info()?; let coins = self.list_coins()?.coins; let mut spend_txs = Vec::new(); for tx in self.list_spend_txs()?.spend_txs { + if let Some(txids) = txids { + if !txids.contains(&tx.psbt.unsigned_tx.txid()) { + continue; + } + } let coins = coins .iter() .filter(|coin| { diff --git a/gui/src/loader.rs b/gui/src/loader.rs index 6898be6c..99441b9a 100644 --- a/gui/src/loader.rs +++ b/gui/src/loader.rs @@ -370,7 +370,7 @@ pub async fn load_application( Wallet::new(info.descriptors.main).load_settings(&gui_config, &datadir_path, network)?; let coins = daemon.list_coins().map(|res| res.coins)?; - let spend_txs = daemon.list_spend_transactions()?; + let spend_txs = daemon.list_spend_transactions(None)?; let cache = Cache { datadir_path,