From 3e22b6e98d60a3c663fbd741144a8e45c6a7c438 Mon Sep 17 00:00:00 2001 From: jmacxx <47253594+jmacxx@users.noreply.github.com> Date: Tue, 22 Sep 2020 11:39:02 -0500 Subject: [PATCH] Do not persist offer security deposit in user settings Fixes #4426 Always calculate the suggested security deposit based on asset price volatility rather than using a persisted value as the minimum. --- .../main/offer/MutableOfferDataModel.java | 14 +++++--------- .../main/offer/MutableOfferViewModel.java | 16 +++++++--------- 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/desktop/src/main/java/bisq/desktop/main/offer/MutableOfferDataModel.java b/desktop/src/main/java/bisq/desktop/main/offer/MutableOfferDataModel.java index feb85be9e3..4437169716 100644 --- a/desktop/src/main/java/bisq/desktop/main/offer/MutableOfferDataModel.java +++ b/desktop/src/main/java/bisq/desktop/main/offer/MutableOfferDataModel.java @@ -174,7 +174,7 @@ public abstract class MutableOfferDataModel extends OfferDataModel implements Bs addressEntry = btcWalletService.getOrCreateAddressEntry(offerId, AddressEntry.Context.OFFER_FUNDING); useMarketBasedPrice.set(preferences.isUsePercentageBasedPrice()); - buyerSecurityDeposit.set(preferences.getBuyerSecurityDepositAsPercent(null)); + buyerSecurityDeposit.set(Restrictions.getMinBuyerSecurityDepositAsPercent()); btcBalanceListener = new BalanceListener(getAddressEntry().getAddress()) { @Override @@ -334,10 +334,10 @@ public abstract class MutableOfferDataModel extends OfferDataModel implements Bs } private void setSuggestedSecurityDeposit(PaymentAccount paymentAccount) { - var minSecurityDeposit = preferences.getBuyerSecurityDepositAsPercent(getPaymentAccount()); + var minSecurityDeposit = Restrictions.getMinBuyerSecurityDepositAsPercent(); try { if (getTradeCurrency() == null) { - setBuyerSecurityDeposit(minSecurityDeposit, false); + setBuyerSecurityDeposit(minSecurityDeposit); return; } // Get average historic prices over for the prior trade period equaling the lock time @@ -360,7 +360,7 @@ public abstract class MutableOfferDataModel extends OfferDataModel implements Bs var min = extremes[0]; var max = extremes[1]; if (min == 0d || max == 0d) { - setBuyerSecurityDeposit(minSecurityDeposit, false); + setBuyerSecurityDeposit(minSecurityDeposit); return; } // Suggested deposit is double the trade range over the previous lock time period, bounded by min/max deposit @@ -640,12 +640,8 @@ public abstract class MutableOfferDataModel extends OfferDataModel implements Bs this.volume.set(volume); } - void setBuyerSecurityDeposit(double value, boolean persist) { + void setBuyerSecurityDeposit(double value) { this.buyerSecurityDeposit.set(value); - if (persist) { - // Only expected to persist for manually changed deposit values - preferences.setBuyerSecurityDepositAsPercent(value, getPaymentAccount()); - } } protected boolean isUseMarketBasedPriceValue() { diff --git a/desktop/src/main/java/bisq/desktop/main/offer/MutableOfferViewModel.java b/desktop/src/main/java/bisq/desktop/main/offer/MutableOfferViewModel.java index 588c06cb56..248da70bda 100644 --- a/desktop/src/main/java/bisq/desktop/main/offer/MutableOfferViewModel.java +++ b/desktop/src/main/java/bisq/desktop/main/offer/MutableOfferViewModel.java @@ -421,7 +421,7 @@ public abstract class MutableOfferViewModel ext securityDepositStringListener = (ov, oldValue, newValue) -> { if (!ignoreSecurityDepositStringListener) { if (securityDepositValidator.validate(newValue).isValid) { - setBuyerSecurityDepositToModel(false); + setBuyerSecurityDepositToModel(); dataModel.calculateTotalToPay(); } updateButtonDisableState(); @@ -898,7 +898,7 @@ public abstract class MutableOfferViewModel ext .width(800) .actionButtonText(Res.get("createOffer.resetToDefault")) .onAction(() -> { - dataModel.setBuyerSecurityDeposit(defaultSecurityDeposit, false); + dataModel.setBuyerSecurityDeposit(defaultSecurityDeposit); ignoreSecurityDepositStringListener = true; buyerSecurityDeposit.set(FormattingUtils.formatToPercent(dataModel.getBuyerSecurityDeposit().get())); ignoreSecurityDepositStringListener = false; @@ -915,7 +915,7 @@ public abstract class MutableOfferViewModel ext } private void applyBuyerSecurityDepositOnFocusOut() { - setBuyerSecurityDepositToModel(true); + setBuyerSecurityDepositToModel(); ignoreSecurityDepositStringListener = true; buyerSecurityDeposit.set(FormattingUtils.formatToPercent(dataModel.getBuyerSecurityDeposit().get())); ignoreSecurityDepositStringListener = false; @@ -1146,13 +1146,11 @@ public abstract class MutableOfferViewModel ext } } - private void setBuyerSecurityDepositToModel(boolean persistPreference) { + private void setBuyerSecurityDepositToModel() { if (buyerSecurityDeposit.get() != null && !buyerSecurityDeposit.get().isEmpty()) { - dataModel.setBuyerSecurityDeposit(ParsingUtils.parsePercentStringToDouble(buyerSecurityDeposit.get()), - persistPreference); + dataModel.setBuyerSecurityDeposit(ParsingUtils.parsePercentStringToDouble(buyerSecurityDeposit.get())); } else { - dataModel.setBuyerSecurityDeposit(Restrictions.getDefaultBuyerSecurityDepositAsPercent(), - persistPreference); + dataModel.setBuyerSecurityDeposit(Restrictions.getDefaultBuyerSecurityDepositAsPercent()); } } @@ -1160,7 +1158,7 @@ public abstract class MutableOfferViewModel ext // If the security deposit in the model is not valid percent String value = FormattingUtils.formatToPercent(dataModel.getBuyerSecurityDeposit().get()); if (!securityDepositValidator.validate(value).isValid) { - dataModel.setBuyerSecurityDeposit(Restrictions.getDefaultBuyerSecurityDepositAsPercent(), false); + dataModel.setBuyerSecurityDeposit(Restrictions.getDefaultBuyerSecurityDepositAsPercent()); } }