mirror of
https://github.com/bisq-network/bisq.git
synced 2025-02-23 06:55:08 +01:00
When accepting an offer do not round the BTC amount outside range
Fixes 3871. The BTC amount of an offer was being adjusted up in certain cases due to a rounding calculation from the fiat value and price. This would prevent some offers from being taken. There's an existing check to ensure that the amount is not adjusted below the minimum, here we add a check to ensure that the amount is not adjusted higher than the maximum defined in the offer.
This commit is contained in:
parent
2db90cf132
commit
223a1d3a6c
1 changed files with 6 additions and 2 deletions
|
@ -361,7 +361,7 @@ class TakeOfferViewModel extends ActivatableWithDataModel<TakeOfferDataModel> im
|
|||
dataModel.applyAmount(adjustedAmountForHalCash);
|
||||
amount.set(btcFormatter.formatCoin(dataModel.getAmount().get()));
|
||||
} else if (CurrencyUtil.isFiatCurrency(dataModel.getCurrencyCode())) {
|
||||
if (!isAmountEqualMinAmount(dataModel.getAmount().get())) {
|
||||
if (!isAmountEqualMinAmount(dataModel.getAmount().get()) && (!isAmountEqualMaxAmount(dataModel.getAmount().get()))) {
|
||||
// We only apply the rounding if the amount is variable (minAmount is lower as amount).
|
||||
// Otherwise we could get an amount lower then the minAmount set by rounding
|
||||
Coin roundedAmount = OfferUtil.getRoundedFiatAmount(dataModel.getAmount().get(), tradePrice,
|
||||
|
@ -644,7 +644,8 @@ class TakeOfferViewModel extends ActivatableWithDataModel<TakeOfferDataModel> im
|
|||
if (price != null) {
|
||||
if (dataModel.isHalCashAccount()) {
|
||||
amount = OfferUtil.getAdjustedAmountForHalCash(amount, price, maxTradeLimit);
|
||||
} else if (CurrencyUtil.isFiatCurrency(dataModel.getCurrencyCode()) && !isAmountEqualMinAmount(amount)) {
|
||||
} else if (CurrencyUtil.isFiatCurrency(dataModel.getCurrencyCode())
|
||||
&& !isAmountEqualMinAmount(amount) && !isAmountEqualMaxAmount(amount)) {
|
||||
// We only apply the rounding if the amount is variable (minAmount is lower as amount).
|
||||
// Otherwise we could get an amount lower then the minAmount set by rounding
|
||||
amount = OfferUtil.getRoundedFiatAmount(amount, price, maxTradeLimit);
|
||||
|
@ -658,6 +659,9 @@ class TakeOfferViewModel extends ActivatableWithDataModel<TakeOfferDataModel> im
|
|||
return amount.value == offer.getMinAmount().value;
|
||||
}
|
||||
|
||||
private boolean isAmountEqualMaxAmount(Coin amount) {
|
||||
return amount.value == offer.getAmount().value;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Getters
|
||||
|
|
Loading…
Add table
Reference in a new issue