use whirlpool premix priority slider to change mixfeetarget, display warning if chosen fee rate is much lower than normal priority

This commit is contained in:
Craig Raw 2023-03-21 09:34:19 +02:00
parent 3bc7c7473a
commit 98b33e184e
4 changed files with 29 additions and 2 deletions

View file

@ -197,6 +197,7 @@ public class MixPoolDialog extends WalletDialog {
tx0Previews = null; tx0Previews = null;
whirlpool.setScode(mixConfig.getScode()); whirlpool.setScode(mixConfig.getScode());
whirlpool.setTx0FeeTarget(tx0FeeTarget); whirlpool.setTx0FeeTarget(tx0FeeTarget);
whirlpool.setMixFeeTarget(tx0FeeTarget);
Whirlpool.Tx0PreviewsService tx0PreviewsService = new Whirlpool.Tx0PreviewsService(whirlpool, utxoEntries); Whirlpool.Tx0PreviewsService tx0PreviewsService = new Whirlpool.Tx0PreviewsService(whirlpool, utxoEntries);
tx0PreviewsService.setOnRunning(workerStateEvent -> { tx0PreviewsService.setOnRunning(workerStateEvent -> {

View file

@ -55,6 +55,9 @@ public class WhirlpoolController {
@FXML @FXML
private CopyableLabel premixFeeRate; private CopyableLabel premixFeeRate;
@FXML
private Label lowPremixFeeRate;
@FXML @FXML
private ComboBox<Pool> pool; private ComboBox<Pool> pool;
@ -139,9 +142,12 @@ public class WhirlpoolController {
tx0Previews = null; tx0Previews = null;
tx0PreviewProperty.set(null); tx0PreviewProperty.set(null);
Tx0FeeTarget tx0FeeTarget = FEE_TARGETS.get(newValue.intValue()); Tx0FeeTarget tx0FeeTarget = FEE_TARGETS.get(newValue.intValue());
premixFeeRate.setText(SparrowMinerFeeSupplier.getFee(Integer.parseInt(tx0FeeTarget.getFeeTarget().getValue())) + " sats/vB"); premixFeeRate.setText(getFeeRate(tx0FeeTarget) + " sats/vB");
lowPremixFeeRate.setVisible(tx0FeeTarget == Tx0FeeTarget.MIN && getFeeRate(tx0FeeTarget) * 2 < getFeeRate(Tx0FeeTarget.BLOCKS_4));
}); });
premixPriority.setValue(1); premixPriority.setValue(1);
lowPremixFeeRate.managedProperty().bind(lowPremixFeeRate.visibleProperty());
lowPremixFeeRate.setVisible(false);
if(mixConfig.getScode() != null) { if(mixConfig.getScode() != null) {
step1.setVisible(false); step1.setVisible(false);
@ -218,6 +224,10 @@ public class WhirlpoolController {
}); });
} }
private int getFeeRate(Tx0FeeTarget tx0FeeTarget) {
return SparrowMinerFeeSupplier.getFee(Integer.parseInt(tx0FeeTarget.getFeeTarget().getValue()));
}
public boolean next() { public boolean next() {
if(step1.isVisible()) { if(step1.isVisible()) {
step1.setVisible(false); step1.setVisible(false);
@ -318,6 +328,7 @@ public class WhirlpoolController {
tx0Previews = null; tx0Previews = null;
whirlpool.setScode(mixConfig.getScode()); whirlpool.setScode(mixConfig.getScode());
whirlpool.setTx0FeeTarget(FEE_TARGETS.get(premixPriority.valueProperty().intValue())); whirlpool.setTx0FeeTarget(FEE_TARGETS.get(premixPriority.valueProperty().intValue()));
whirlpool.setMixFeeTarget(FEE_TARGETS.get(premixPriority.valueProperty().intValue()));
Whirlpool.Tx0PreviewsService tx0PreviewsService = new Whirlpool.Tx0PreviewsService(whirlpool, utxoEntries); Whirlpool.Tx0PreviewsService tx0PreviewsService = new Whirlpool.Tx0PreviewsService(whirlpool, utxoEntries);
tx0PreviewsService.setOnRunning(workerStateEvent -> { tx0PreviewsService.setOnRunning(workerStateEvent -> {

View file

@ -43,4 +43,8 @@
.field-control { .field-control {
-fx-pref-width: 180px; -fx-pref-width: 180px;
} }
.low-fee-warning {
-fx-text-fill: rgb(238, 210, 2);
}

View file

@ -107,6 +107,17 @@
</padding> </padding>
<Label text="Premix Fee Rate:" styleClass="field-label" /> <Label text="Premix Fee Rate:" styleClass="field-label" />
<CopyableLabel fx:id="premixFeeRate" /> <CopyableLabel fx:id="premixFeeRate" />
<Label fx:id="lowPremixFeeRate">
<graphic>
<Glyph fontFamily="Font Awesome 5 Free Solid" fontSize="12" icon="EXCLAMATION_TRIANGLE" styleClass="low-fee-warning"/>
</graphic>
<padding>
<Insets left="12" />
</padding>
<tooltip>
<Tooltip text="A low fee rate may delay the first mix."/>
</tooltip>
</Label>
</HBox> </HBox>
</VBox> </VBox>
<VBox fx:id="step4" spacing="15"> <VBox fx:id="step4" spacing="15">