Search in sources :

Example 1 with WalletMasterMixConfigChangedEvent

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

the class WhirlpoolController method fetchTx0Preview.

private void fetchTx0Preview(Pool pool) {
    if (mixConfig.getScode() == null) {
        mixConfig.setScode("");
        EventManager.get().post(new WalletMasterMixConfigChangedEvent(wallet));
    }
    Whirlpool whirlpool = AppServices.getWhirlpoolServices().getWhirlpool(walletId);
    if (tx0Previews != null && mixConfig.getScode().equals(whirlpool.getScode())) {
        Tx0Preview tx0Preview = tx0Previews.getTx0Preview(pool.getPoolId());
        tx0PreviewProperty.set(tx0Preview);
    } else {
        tx0Previews = null;
        whirlpool.setScode(mixConfig.getScode());
        whirlpool.setTx0FeeTarget(FEE_TARGETS.get(premixPriority.valueProperty().intValue()));
        Whirlpool.Tx0PreviewsService tx0PreviewsService = new Whirlpool.Tx0PreviewsService(whirlpool, utxoEntries);
        tx0PreviewsService.setOnRunning(workerStateEvent -> {
            nbOutputsBox.setVisible(true);
            nbOutputsLoading.setText("Calculating...");
            nbOutputs.setVisible(false);
            discountFeeBox.setVisible(false);
            tx0PreviewProperty.set(null);
        });
        tx0PreviewsService.setOnSucceeded(workerStateEvent -> {
            tx0Previews = tx0PreviewsService.getValue();
            Tx0Preview tx0Preview = tx0Previews.getTx0Preview(pool.getPoolId());
            tx0PreviewProperty.set(tx0Preview);
        });
        tx0PreviewsService.setOnFailed(workerStateEvent -> {
            Throwable exception = workerStateEvent.getSource().getException();
            while (exception.getCause() != null) {
                exception = exception.getCause();
            }
            nbOutputsLoading.setText("Error fetching Tx0: " + exception.getMessage());
        });
        tx0PreviewsService.start();
    }
}
Also used : WalletMasterMixConfigChangedEvent(com.sparrowwallet.sparrow.event.WalletMasterMixConfigChangedEvent) Tx0Preview(com.samourai.whirlpool.client.tx0.Tx0Preview)

Example 2 with WalletMasterMixConfigChangedEvent

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

the class WhirlpoolController method initializeView.

public void initializeView(String walletId, Wallet wallet, List<UtxoEntry> utxoEntries) {
    this.walletId = walletId;
    this.wallet = wallet;
    this.utxoEntries = utxoEntries;
    this.mixConfig = wallet.getMasterMixConfig();
    step1.managedProperty().bind(step1.visibleProperty());
    step2.managedProperty().bind(step2.visibleProperty());
    step3.managedProperty().bind(step3.visibleProperty());
    step4.managedProperty().bind(step4.visibleProperty());
    step2.setVisible(false);
    step3.setVisible(false);
    step4.setVisible(false);
    scode.setText(mixConfig.getScode() == null ? "" : mixConfig.getScode());
    scode.setTextFormatter(new TextFormatter<>((change) -> {
        change.setText(change.getText().toUpperCase());
        return change;
    }));
    scode.textProperty().addListener((observable, oldValue, newValue) -> {
        pool.setItems(FXCollections.emptyObservableList());
        tx0PreviewProperty.set(null);
        mixConfig.setScode(newValue);
        EventManager.get().post(new WalletMasterMixConfigChangedEvent(wallet));
    });
    premixPriority.setMin(0);
    premixPriority.setMax(FEE_TARGETS.size() - 1);
    premixPriority.setMajorTickUnit(1);
    premixPriority.setMinorTickCount(0);
    premixPriority.setLabelFormatter(new StringConverter<>() {

        @Override
        public String toString(Double object) {
            return object.intValue() == 0 ? "Low" : (object.intValue() == 1 ? "Normal" : "High");
        }

        @Override
        public Double fromString(String string) {
            return null;
        }
    });
    premixPriority.valueProperty().addListener((observable, oldValue, newValue) -> {
        pool.setItems(FXCollections.emptyObservableList());
        tx0Previews = null;
        tx0PreviewProperty.set(null);
        Tx0FeeTarget tx0FeeTarget = FEE_TARGETS.get(newValue.intValue());
        premixFeeRate.setText(SparrowMinerFeeSupplier.getFee(Integer.parseInt(tx0FeeTarget.getFeeTarget().getValue())) + " sats/vB");
    });
    premixPriority.setValue(1);
    if (mixConfig.getScode() != null) {
        step1.setVisible(false);
        step3.setVisible(true);
    }
    pool.setConverter(new StringConverter<Pool>() {

        @Override
        public String toString(Pool selectedPool) {
            if (selectedPool == null) {
                pool.setTooltip(null);
                return "Fetching pools...";
            }
            BitcoinUnit bitcoinUnit = wallet.getAutoUnit();
            String satsValue = String.format(Locale.ENGLISH, "%,d", selectedPool.getDenomination()) + " sats";
            String btcValue = CoinLabel.BTC_FORMAT.format((double) selectedPool.getDenomination() / Transaction.SATOSHIS_PER_BITCOIN) + " BTC";
            pool.setTooltip(bitcoinUnit == BitcoinUnit.BTC ? new Tooltip(satsValue) : new Tooltip(btcValue));
            return bitcoinUnit == BitcoinUnit.BTC ? btcValue : satsValue;
        }

        @Override
        public Pool fromString(String string) {
            return null;
        }
    });
    pool.valueProperty().addListener((observable, oldValue, newValue) -> {
        if (newValue == null) {
            selectedPool.setVisible(false);
        } else {
            poolFee.setValue(newValue.getFeeValue());
            poolAnonset.setText(newValue.getMixAnonymitySet() + " UTXOs");
            selectedPool.setVisible(true);
            fetchTx0Preview(newValue);
        }
    });
    step4.visibleProperty().addListener((observable, oldValue, newValue) -> {
        if (newValue && pool.getItems().isEmpty()) {
            fetchPools();
        }
    });
    selectedPool.managedProperty().bind(selectedPool.visibleProperty());
    selectedPool.setVisible(false);
    pool.managedProperty().bind(pool.visibleProperty());
    poolInsufficient.managedProperty().bind(poolInsufficient.visibleProperty());
    poolInsufficient.visibleProperty().bind(pool.visibleProperty().not());
    discountFeeBox.managedProperty().bind(discountFeeBox.visibleProperty());
    discountFeeBox.setVisible(false);
    nbOutputsBox.managedProperty().bind(nbOutputsBox.visibleProperty());
    nbOutputsBox.setVisible(false);
    nbOutputsLoading.managedProperty().bind(nbOutputsLoading.visibleProperty());
    nbOutputs.managedProperty().bind(nbOutputs.visibleProperty());
    nbOutputsLoading.visibleProperty().bind(nbOutputs.visibleProperty().not());
    nbOutputs.setVisible(false);
    tx0PreviewProperty.addListener((observable, oldValue, tx0Preview) -> {
        if (tx0Preview == null) {
            nbOutputsBox.setVisible(true);
            nbOutputsLoading.setText("Calculating...");
            nbOutputs.setVisible(false);
            discountFeeBox.setVisible(false);
        } else {
            discountFeeBox.setVisible(tx0Preview.getPool().getFeeValue() != tx0Preview.getTx0Data().getFeeValue());
            discountFee.setValue(tx0Preview.getTx0Data().getFeeValue());
            nbOutputsBox.setVisible(true);
            nbOutputs.setText(tx0Preview.getNbPremix() + " UTXOs");
            nbOutputs.setVisible(true);
        }
    });
}
Also used : java.util(java.util) Wallet(com.sparrowwallet.drongo.wallet.Wallet) javafx.scene.control(javafx.scene.control) Pool(com.samourai.whirlpool.client.whirlpool.beans.Pool) SparrowMinerFeeSupplier(com.sparrowwallet.sparrow.whirlpool.dataSource.SparrowMinerFeeSupplier) FXCollections(javafx.collections.FXCollections) CopyableCoinLabel(com.sparrowwallet.sparrow.control.CopyableCoinLabel) Config(com.sparrowwallet.sparrow.io.Config) VBox(javafx.scene.layout.VBox) MixConfig(com.sparrowwallet.drongo.wallet.MixConfig) UtxoEntry(com.sparrowwallet.sparrow.wallet.UtxoEntry) Tx0Previews(com.samourai.whirlpool.client.tx0.Tx0Previews) Transaction(com.sparrowwallet.drongo.protocol.Transaction) HBox(javafx.scene.layout.HBox) ObjectProperty(javafx.beans.property.ObjectProperty) Tx0Preview(com.samourai.whirlpool.client.tx0.Tx0Preview) StringConverter(javafx.util.StringConverter) CoinLabel(com.sparrowwallet.sparrow.control.CoinLabel) WalletMasterMixConfigChangedEvent(com.sparrowwallet.sparrow.event.WalletMasterMixConfigChangedEvent) Entry(com.sparrowwallet.sparrow.wallet.Entry) BitcoinUnit(com.sparrowwallet.drongo.BitcoinUnit) FXML(javafx.fxml.FXML) AppServices(com.sparrowwallet.sparrow.AppServices) CopyableLabel(com.sparrowwallet.sparrow.control.CopyableLabel) SimpleObjectProperty(javafx.beans.property.SimpleObjectProperty) Tx0FeeTarget(com.samourai.whirlpool.client.wallet.beans.Tx0FeeTarget) EventManager(com.sparrowwallet.sparrow.EventManager) BitcoinUnit(com.sparrowwallet.drongo.BitcoinUnit) Tx0FeeTarget(com.samourai.whirlpool.client.wallet.beans.Tx0FeeTarget) WalletMasterMixConfigChangedEvent(com.sparrowwallet.sparrow.event.WalletMasterMixConfigChangedEvent) Pool(com.samourai.whirlpool.client.whirlpool.beans.Pool)

Aggregations

Tx0Preview (com.samourai.whirlpool.client.tx0.Tx0Preview)2 WalletMasterMixConfigChangedEvent (com.sparrowwallet.sparrow.event.WalletMasterMixConfigChangedEvent)2 Tx0Previews (com.samourai.whirlpool.client.tx0.Tx0Previews)1 Tx0FeeTarget (com.samourai.whirlpool.client.wallet.beans.Tx0FeeTarget)1 Pool (com.samourai.whirlpool.client.whirlpool.beans.Pool)1 BitcoinUnit (com.sparrowwallet.drongo.BitcoinUnit)1 Transaction (com.sparrowwallet.drongo.protocol.Transaction)1 MixConfig (com.sparrowwallet.drongo.wallet.MixConfig)1 Wallet (com.sparrowwallet.drongo.wallet.Wallet)1 AppServices (com.sparrowwallet.sparrow.AppServices)1 EventManager (com.sparrowwallet.sparrow.EventManager)1 CoinLabel (com.sparrowwallet.sparrow.control.CoinLabel)1 CopyableCoinLabel (com.sparrowwallet.sparrow.control.CopyableCoinLabel)1 CopyableLabel (com.sparrowwallet.sparrow.control.CopyableLabel)1 Config (com.sparrowwallet.sparrow.io.Config)1 Entry (com.sparrowwallet.sparrow.wallet.Entry)1 UtxoEntry (com.sparrowwallet.sparrow.wallet.UtxoEntry)1 SparrowMinerFeeSupplier (com.sparrowwallet.sparrow.whirlpool.dataSource.SparrowMinerFeeSupplier)1 java.util (java.util)1 ObjectProperty (javafx.beans.property.ObjectProperty)1