From 16755e3140d36465bdf02b645ba68f493dec388f Mon Sep 17 00:00:00 2001 From: Craig Raw Date: Thu, 11 Aug 2022 10:26:23 +0200 Subject: [PATCH] freeze and unfreeze any utxos from address cell context menu --- .../sparrow/control/EntryCell.java | 26 +++++++++++++++++++ .../sparrow/wallet/HashIndexEntry.java | 4 +-- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/sparrowwallet/sparrow/control/EntryCell.java b/src/main/java/com/sparrowwallet/sparrow/control/EntryCell.java index 90697f6f..d8626a9b 100644 --- a/src/main/java/com/sparrowwallet/sparrow/control/EntryCell.java +++ b/src/main/java/com/sparrowwallet/sparrow/control/EntryCell.java @@ -558,6 +558,32 @@ public class EntryCell extends TreeTableCell { getItems().add(signVerifyMessage); } + if(nodeEntry != null && !nodeEntry.getNode().getUnspentTransactionOutputs().isEmpty()) { + List unfrozenUtxos = nodeEntry.getNode().getUnspentTransactionOutputs().stream().filter(utxo -> utxo.getStatus() != Status.FROZEN).collect(Collectors.toList()); + if(!unfrozenUtxos.isEmpty()) { + MenuItem freezeUtxos = new MenuItem("Freeze UTXOs"); + freezeUtxos.setGraphic(getFreezeGlyph()); + freezeUtxos.setOnAction(AE -> { + hide(); + unfrozenUtxos.forEach(utxo -> utxo.setStatus(Status.FROZEN)); + EventManager.get().post(new WalletUtxoStatusChangedEvent(nodeEntry.getWallet(), unfrozenUtxos)); + }); + getItems().add(freezeUtxos); + } + + List frozenUtxos = nodeEntry.getNode().getUnspentTransactionOutputs().stream().filter(utxo -> utxo.getStatus() == Status.FROZEN).collect(Collectors.toList()); + if(!frozenUtxos.isEmpty()) { + MenuItem unfreezeUtxos = new MenuItem("Unfreeze UTXOs"); + unfreezeUtxos.setGraphic(getUnfreezeGlyph()); + unfreezeUtxos.setOnAction(AE -> { + hide(); + frozenUtxos.forEach(utxo -> utxo.setStatus(null)); + EventManager.get().post(new WalletUtxoStatusChangedEvent(nodeEntry.getWallet(), frozenUtxos)); + }); + getItems().add(unfreezeUtxos); + } + } + MenuItem copyAddress = new MenuItem("Copy Address"); copyAddress.setOnAction(AE -> { hide(); diff --git a/src/main/java/com/sparrowwallet/sparrow/wallet/HashIndexEntry.java b/src/main/java/com/sparrowwallet/sparrow/wallet/HashIndexEntry.java index 4375fc09..cb6f39ac 100644 --- a/src/main/java/com/sparrowwallet/sparrow/wallet/HashIndexEntry.java +++ b/src/main/java/com/sparrowwallet/sparrow/wallet/HashIndexEntry.java @@ -89,14 +89,14 @@ public class HashIndexEntry extends Entry implements Comparable if (!(o instanceof HashIndexEntry)) return false; HashIndexEntry that = (HashIndexEntry) o; return super.equals(that) && - hashIndex.equals(that.hashIndex) && + hashIndex == that.hashIndex && type == that.type && keyPurpose == that.keyPurpose; } @Override public int hashCode() { - return Objects.hash(getWallet(), hashIndex, type, keyPurpose); + return Objects.hash(getWallet(), System.identityHashCode(hashIndex), type, keyPurpose); } @Override