gui(psbt): get conflicting txs from filtered coins

This commit is contained in:
jp1ac4 2024-02-06 08:32:56 +00:00
parent 4641d9eb7b
commit ddd1e84700
No known key found for this signature in database
GPG Key ID: C61FA2110D7DC407

View File

@ -7,6 +7,7 @@ use iced::Subscription;
use iced::Command;
use liana::{
commands::CoinStatus,
descriptors::LianaPolicy,
miniscript::bitcoin::{bip32::Fingerprint, psbt::Psbt, Network, Txid},
};
@ -167,23 +168,15 @@ impl PsbtState {
return cmd;
}
Message::View(view::Message::Spend(view::SpendTxMessage::Broadcast)) => {
let outpoints: HashSet<_> = self.tx.coins.keys().cloned().collect();
let outpoints: Vec<_> = self.tx.coins.keys().cloned().collect();
return Command::perform(
async move {
daemon
// TODO: filter for the outpoints in `tx.coins` when this is possible:
// https://github.com/wizardsardine/liana/issues/677
.list_coins(&[], &[])
.list_coins(&[CoinStatus::Spending], &outpoints)
.map(|res| {
res.coins
.iter()
.filter_map(|c| {
if outpoints.contains(&c.outpoint) {
c.spend_info.map(|info| info.txid)
} else {
None
}
})
.filter_map(|c| c.spend_info.map(|info| info.txid))
.collect()
})
.map_err(|e| e.into())