gui(daemon): extract common function for historytxs

This commit is contained in:
jp1ac4 2024-03-25 17:06:31 +00:00
parent 6c7ca2ccae
commit f3fdb96827
No known key found for this signature in database
GPG Key ID: A7ACD32423568D7B

View File

@ -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<TransactionInfo>,
) -> Result<Vec<model::HistoryTransaction>, 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<Vec<model::HistoryTransaction>, DaemonError> {
let txs = self.list_confirmed_txs(start, end, limit)?.transactions;
self.txs_to_historytxs(txs)
}
fn get_history_txs(
&self,
txids: &[Txid],
) -> Result<Vec<model::HistoryTransaction>, 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<Vec<model::HistoryTransaction>, DaemonError> {