Use max trade amount from offer at take offer view (allow backwards compatibility when we increase trade limits)

This commit is contained in:
Manfred Karrer 2016-03-19 13:35:45 +01:00
parent a25d089f55
commit f61bf11c68
3 changed files with 13 additions and 14 deletions

View file

@ -314,7 +314,7 @@ class CreateOfferViewModel extends ActivatableWithDataModel<CreateOfferDataModel
void initWithData(Offer.Direction direction, TradeCurrency tradeCurrency) { void initWithData(Offer.Direction direction, TradeCurrency tradeCurrency) {
dataModel.initWithData(direction, tradeCurrency); dataModel.initWithData(direction, tradeCurrency);
if (dataModel.paymentAccount != null) if (dataModel.paymentAccount != null)
btcValidator.setPaymentMethod(dataModel.paymentAccount.getPaymentMethod()); btcValidator.setMaxTradeLimitInBitcoin(dataModel.paymentAccount.getPaymentMethod().getMaxTradeLimitInBitcoin());
} }
@ -370,7 +370,7 @@ class CreateOfferViewModel extends ActivatableWithDataModel<CreateOfferDataModel
} }
public void onPaymentAccountSelected(PaymentAccount paymentAccount) { public void onPaymentAccountSelected(PaymentAccount paymentAccount) {
btcValidator.setPaymentMethod(paymentAccount.getPaymentMethod()); btcValidator.setMaxTradeLimitInBitcoin(paymentAccount.getPaymentMethod().getMaxTradeLimitInBitcoin());
dataModel.onPaymentAccountSelected(paymentAccount); dataModel.onPaymentAccountSelected(paymentAccount);
} }

View file

@ -171,7 +171,7 @@ class TakeOfferViewModel extends ActivatableWithDataModel<TakeOfferDataModel> im
offer.errorMessageProperty().addListener(offerErrorListener); offer.errorMessageProperty().addListener(offerErrorListener);
errorMessage.set(offer.errorMessageProperty().get()); errorMessage.set(offer.errorMessageProperty().get());
btcValidator.setPaymentMethod(dataModel.paymentAccount.getPaymentMethod()); btcValidator.setMaxTradeLimitInBitcoin(offer.getAmount());
} }
@ -183,8 +183,6 @@ class TakeOfferViewModel extends ActivatableWithDataModel<TakeOfferDataModel> im
takeOfferSucceededHandler = resultHandler; takeOfferSucceededHandler = resultHandler;
takeOfferRequested = true; takeOfferRequested = true;
showTransactionPublishedScreen.set(false); showTransactionPublishedScreen.set(false);
//isTakeOfferSpinnerVisible.set(true);
//takeOfferSpinnerInfoText.set(BSResources.get("takeOffer.fundsBox.takeOfferSpinnerInfo"));
dataModel.onTakeOffer(trade -> { dataModel.onTakeOffer(trade -> {
this.trade = trade; this.trade = trade;
trade.stateProperty().addListener(tradeStateListener); trade.stateProperty().addListener(tradeStateListener);
@ -197,7 +195,8 @@ class TakeOfferViewModel extends ActivatableWithDataModel<TakeOfferDataModel> im
public void onPaymentAccountSelected(PaymentAccount paymentAccount) { public void onPaymentAccountSelected(PaymentAccount paymentAccount) {
dataModel.onPaymentAccountSelected(paymentAccount); dataModel.onPaymentAccountSelected(paymentAccount);
btcValidator.setPaymentMethod(paymentAccount.getPaymentMethod()); if (offer != null)
btcValidator.setMaxTradeLimitInBitcoin(offer.getAmount());
} }
public void onShowPayFundsScreen() { public void onShowPayFundsScreen() {

View file

@ -19,10 +19,9 @@ package io.bitsquare.gui.util.validation;
import io.bitsquare.gui.util.BSFormatter; import io.bitsquare.gui.util.BSFormatter;
import io.bitsquare.locale.BSResources; import io.bitsquare.locale.BSResources;
import io.bitsquare.payment.PaymentMethod;
import org.bitcoinj.core.Coin; import org.bitcoinj.core.Coin;
import org.jetbrains.annotations.NotNull;
import javax.annotation.Nullable;
import javax.inject.Inject; import javax.inject.Inject;
import java.math.BigDecimal; import java.math.BigDecimal;
@ -30,16 +29,17 @@ public class BtcValidator extends NumberValidator {
private final BSFormatter formatter; private final BSFormatter formatter;
@NotNull
private PaymentMethod paymentMethod; @Nullable
private Coin maxTradeLimitInBitcoin;
@Inject @Inject
public BtcValidator(BSFormatter formatter) { public BtcValidator(BSFormatter formatter) {
this.formatter = formatter; this.formatter = formatter;
} }
public void setPaymentMethod(@NotNull PaymentMethod paymentMethod) { public void setMaxTradeLimitInBitcoin(Coin maxTradeLimitInBitcoin) {
this.paymentMethod = paymentMethod; this.maxTradeLimitInBitcoin = maxTradeLimitInBitcoin;
} }
@Override @Override
@ -70,8 +70,8 @@ public class BtcValidator extends NumberValidator {
} }
protected ValidationResult validateIfNotExceedsMaxBtcValue(String input) { protected ValidationResult validateIfNotExceedsMaxBtcValue(String input) {
if (paymentMethod != null && Coin.parseCoin(input).compareTo(paymentMethod.getMaxTradeLimitInBitcoin()) > 0) if (maxTradeLimitInBitcoin != null && Coin.parseCoin(input).compareTo(maxTradeLimitInBitcoin) > 0)
return new ValidationResult(false, BSResources.get("validation.btc.toLarge", formatter.formatCoinWithCode(paymentMethod.getMaxTradeLimitInBitcoin()))); return new ValidationResult(false, BSResources.get("validation.btc.toLarge", formatter.formatCoinWithCode(maxTradeLimitInBitcoin)));
else else
return new ValidationResult(true); return new ValidationResult(true);
} }