gui(daemon): extract common function for historytxs
This commit is contained in:
parent
6c7ca2ccae
commit
f3fdb96827
@ -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> {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user