From 266fd44f8761ba97829cb7cb8553f9c2363b62d1 Mon Sep 17 00:00:00 2001 From: Christoph Atteneder Date: Mon, 31 May 2021 10:26:43 +0200 Subject: [PATCH] Set custom security deposit when cloning an offer --- .../desktop/main/offer/MutableOfferViewModel.java | 1 + .../duplicateoffer/DuplicateOfferDataModel.java | 14 ++++++++++++++ 2 files changed, 15 insertions(+) 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 e09486dbd0c..ceb17786704 100644 --- a/desktop/src/main/java/bisq/desktop/main/offer/MutableOfferViewModel.java +++ b/desktop/src/main/java/bisq/desktop/main/offer/MutableOfferViewModel.java @@ -484,6 +484,7 @@ private void createListeners() { if (dataModel.getAmount().get() != null) { buyerSecurityDepositInBTC.set(btcFormatter.formatCoinWithCode(dataModel.getBuyerSecurityDepositAsCoin())); } + updateBuyerSecurityDeposit(); } else { buyerSecurityDeposit.set(""); buyerSecurityDepositInBTC.set(""); diff --git a/desktop/src/main/java/bisq/desktop/main/portfolio/duplicateoffer/DuplicateOfferDataModel.java b/desktop/src/main/java/bisq/desktop/main/portfolio/duplicateoffer/DuplicateOfferDataModel.java index ff0b6cb8600..b713ed112e7 100644 --- a/desktop/src/main/java/bisq/desktop/main/portfolio/duplicateoffer/DuplicateOfferDataModel.java +++ b/desktop/src/main/java/bisq/desktop/main/portfolio/duplicateoffer/DuplicateOfferDataModel.java @@ -24,6 +24,7 @@ import bisq.core.account.witness.AccountAgeWitnessService; import bisq.core.btc.wallet.BsqWalletService; import bisq.core.btc.wallet.BtcWalletService; +import bisq.core.btc.wallet.Restrictions; import bisq.core.offer.CreateOfferService; import bisq.core.offer.Offer; import bisq.core.offer.OfferUtil; @@ -35,9 +36,12 @@ import bisq.core.user.User; import bisq.core.util.FormattingUtils; import bisq.core.util.coin.CoinFormatter; +import bisq.core.util.coin.CoinUtil; import bisq.network.p2p.P2PService; +import org.bitcoinj.core.Coin; + import com.google.inject.Inject; import javax.inject.Named; @@ -86,8 +90,18 @@ public void populateData(Offer offer) { setVolume(offer.getVolume()); setUseMarketBasedPrice(offer.isUseMarketBasedPrice()); + setBuyerSecurityDeposit(getBuyerSecurityAsPercent(offer)); + if (offer.isUseMarketBasedPrice()) { setMarketPriceMargin(offer.getMarketPriceMargin()); } } + + private double getBuyerSecurityAsPercent(Offer offer) { + Coin offerBuyerSecurityDeposit = getBoundedBuyerSecurityDepositAsCoin(offer.getBuyerSecurityDeposit()); + double offerBuyerSecurityDepositAsPercent = CoinUtil.getAsPercentPerBtc(offerBuyerSecurityDeposit, + offer.getAmount()); + return Math.min(offerBuyerSecurityDepositAsPercent, + Restrictions.getMaxBuyerSecurityDepositAsPercent()); + } }