From f3fdb968275db3987d7afaee3b1ba84e0020f8a9 Mon Sep 17 00:00:00 2001 From: jp1ac4 <121959000+jp1ac4@users.noreply.github.com> Date: Mon, 25 Mar 2024 17:06:31 +0000 Subject: [PATCH] gui(daemon): extract common function for historytxs --- gui/src/daemon/mod.rs | 51 ++++++++++++------------------------------- 1 file changed, 14 insertions(+), 37 deletions(-) diff --git a/gui/src/daemon/mod.rs b/gui/src/daemon/mod.rs index f33ceb56..ea846baa 100644 --- a/gui/src/daemon/mod.rs +++ b/gui/src/daemon/mod.rs @@ -8,7 +8,7 @@ use std::io::ErrorKind; use std::iter::FromIterator; use liana::{ - commands::{CoinStatus, LabelItem}, + commands::{CoinStatus, LabelItem, TransactionInfo}, config::Config, miniscript::bitcoin::{address, psbt::Psbt, secp256k1, Address, OutPoint, Txid}, StartupError, @@ -149,15 +149,12 @@ pub trait Daemon: Debug { Ok(spend_txs) } - fn list_history_txs( + fn txs_to_historytxs( &self, - start: u32, - end: u32, - limit: u64, + txs: Vec, ) -> Result, DaemonError> { let info = self.get_info()?; let coins = self.list_coins(&[], &[])?.coins; - let txs = self.list_confirmed_txs(start, end, limit)?.transactions; let mut txs = txs .into_iter() .map(|tx| { @@ -189,42 +186,22 @@ pub trait Daemon: Debug { Ok(txs) } + fn list_history_txs( + &self, + start: u32, + end: u32, + limit: u64, + ) -> Result, DaemonError> { + let txs = self.list_confirmed_txs(start, end, limit)?.transactions; + self.txs_to_historytxs(txs) + } + fn get_history_txs( &self, txids: &[Txid], ) -> Result, DaemonError> { - let info = self.get_info()?; - let coins = self.list_coins(&[], &[])?.coins; let txs = self.list_txs(txids)?.transactions; - let mut txs = txs - .into_iter() - .map(|tx| { - let mut tx_coins = Vec::new(); - let mut change_indexes = Vec::new(); - for coin in &coins { - if coin.outpoint.txid == tx.tx.txid() { - change_indexes.push(coin.outpoint.vout as usize) - } else if tx - .tx - .input - .iter() - .any(|input| input.previous_output == coin.outpoint) - { - tx_coins.push(coin.clone()); - } - } - model::HistoryTransaction::new( - tx.tx, - tx.height, - tx.time, - tx_coins, - change_indexes, - info.network, - ) - }) - .collect(); - load_labels(self, &mut txs)?; - Ok(txs) + self.txs_to_historytxs(txs) } fn list_pending_txs(&self) -> Result, DaemonError> {