Search in sources :

Example 1 with NewWalletTransactionsEvent

use of com.sparrowwallet.sparrow.event.NewWalletTransactionsEvent in project sparrow by sparrowwallet.

the class WalletTransactionsEntry method updateTransactions.

public void updateTransactions() {
    Map<HashIndex, BlockTransactionHashIndex> walletTxos = getWallet().getWalletTxos().entrySet().stream().collect(Collectors.toUnmodifiableMap(entry -> new HashIndex(entry.getKey().getHash(), entry.getKey().getIndex()), Map.Entry::getKey));
    List<Entry> current = getWalletTransactions(getWallet()).stream().map(WalletTransaction::getTransactionEntry).collect(Collectors.toList());
    List<Entry> previous = new ArrayList<>(getChildren());
    List<Entry> entriesAdded = new ArrayList<>(current);
    entriesAdded.removeAll(previous);
    getChildren().addAll(entriesAdded);
    List<Entry> entriesRemoved = new ArrayList<>(previous);
    entriesRemoved.removeAll(current);
    getChildren().removeAll(entriesRemoved);
    calculateBalances(true);
    List<Entry> entriesComplete = entriesAdded.stream().filter(txEntry -> ((TransactionEntry) txEntry).isComplete(walletTxos)).collect(Collectors.toList());
    if (!entriesComplete.isEmpty()) {
        EventManager.get().post(new NewWalletTransactionsEvent(getWallet(), entriesAdded.stream().map(entry -> (TransactionEntry) entry).collect(Collectors.toList())));
    }
    if (entriesAdded.size() > entriesComplete.size()) {
        entriesAdded.removeAll(entriesComplete);
        for (Entry entry : entriesAdded) {
            TransactionEntry txEntry = (TransactionEntry) entry;
            getChildren().remove(txEntry);
            log.warn("Removing and not notifying incomplete entry " + ((TransactionEntry) entry).getBlockTransaction().getHashAsString() + " value " + txEntry.getValue() + " children " + entry.getChildren().stream().map(e -> e.getEntryType() + " " + ((HashIndexEntry) e).getHashIndex()).collect(Collectors.toList()));
        }
    }
}
Also used : java.util(java.util) Logger(org.slf4j.Logger) BlockTransactionHashIndex(com.sparrowwallet.drongo.wallet.BlockTransactionHashIndex) Wallet(com.sparrowwallet.drongo.wallet.Wallet) LoggerFactory(org.slf4j.LoggerFactory) LongProperty(javafx.beans.property.LongProperty) Config(com.sparrowwallet.sparrow.io.Config) Collectors(java.util.stream.Collectors) KeyPurpose(com.sparrowwallet.drongo.KeyPurpose) BlockTransaction(com.sparrowwallet.drongo.wallet.BlockTransaction) EventManager(com.sparrowwallet.sparrow.EventManager) LongPropertyBase(javafx.beans.property.LongPropertyBase) WalletNode(com.sparrowwallet.drongo.wallet.WalletNode) HashIndex(com.sparrowwallet.drongo.protocol.HashIndex) NewWalletTransactionsEvent(com.sparrowwallet.sparrow.event.NewWalletTransactionsEvent) BlockTransactionHashIndex(com.sparrowwallet.drongo.wallet.BlockTransactionHashIndex) NewWalletTransactionsEvent(com.sparrowwallet.sparrow.event.NewWalletTransactionsEvent) BlockTransactionHashIndex(com.sparrowwallet.drongo.wallet.BlockTransactionHashIndex) HashIndex(com.sparrowwallet.drongo.protocol.HashIndex)

Aggregations

KeyPurpose (com.sparrowwallet.drongo.KeyPurpose)1 HashIndex (com.sparrowwallet.drongo.protocol.HashIndex)1 BlockTransaction (com.sparrowwallet.drongo.wallet.BlockTransaction)1 BlockTransactionHashIndex (com.sparrowwallet.drongo.wallet.BlockTransactionHashIndex)1 Wallet (com.sparrowwallet.drongo.wallet.Wallet)1 WalletNode (com.sparrowwallet.drongo.wallet.WalletNode)1 EventManager (com.sparrowwallet.sparrow.EventManager)1 NewWalletTransactionsEvent (com.sparrowwallet.sparrow.event.NewWalletTransactionsEvent)1 Config (com.sparrowwallet.sparrow.io.Config)1 java.util (java.util)1 Collectors (java.util.stream.Collectors)1 LongProperty (javafx.beans.property.LongProperty)1 LongPropertyBase (javafx.beans.property.LongPropertyBase)1 Logger (org.slf4j.Logger)1 LoggerFactory (org.slf4j.LoggerFactory)1