mirror of
https://github.com/haveno-dex/haveno.git
synced 2025-08-10 23:50:10 -04:00
support goldback (XGB)
This commit is contained in:
parent
6a49fffb38
commit
9c2308f7a3
23 changed files with 135 additions and 121 deletions
|
@ -40,8 +40,6 @@ import haveno.core.user.User;
|
|||
import haveno.core.util.FormattingUtils;
|
||||
import haveno.core.util.ParsingUtils;
|
||||
import haveno.core.util.PriceUtil;
|
||||
import haveno.core.util.validation.NonFiatPriceValidator;
|
||||
import haveno.core.util.validation.FiatPriceValidator;
|
||||
import haveno.core.util.validation.InputValidator;
|
||||
import haveno.desktop.common.view.ActivatableView;
|
||||
import haveno.desktop.common.view.FxmlView;
|
||||
|
@ -313,9 +311,8 @@ public class MobileNotificationsView extends ActivatableView<GridPane, Void> {
|
|||
TradeCurrency selectedItem = currencyComboBox.getSelectionModel().getSelectedItem();
|
||||
if (selectedItem != null) {
|
||||
selectedPriceAlertTradeCurrency = selectedItem.getCode();
|
||||
boolean isFiatCurrency = CurrencyUtil.isFiatCurrency(selectedPriceAlertTradeCurrency);
|
||||
priceAlertHighInputTextField.setValidator(isFiatCurrency ? new FiatPriceValidator() : new NonFiatPriceValidator());
|
||||
priceAlertLowInputTextField.setValidator(isFiatCurrency ? new FiatPriceValidator() : new NonFiatPriceValidator());
|
||||
priceAlertHighInputTextField.setValidator(PriceUtil.getPriceValidator(selectedPriceAlertTradeCurrency));
|
||||
priceAlertLowInputTextField.setValidator(PriceUtil.getPriceValidator(selectedPriceAlertTradeCurrency));
|
||||
} else {
|
||||
selectedPriceAlertTradeCurrency = null;
|
||||
}
|
||||
|
|
|
@ -257,15 +257,15 @@ class OfferBookChartViewModel extends ActivatableViewModel {
|
|||
}
|
||||
|
||||
public int getMaxNumberOfPriceZeroDecimalsToColorize(Offer offer) {
|
||||
return offer.isFiatOffer()
|
||||
? GUIUtil.FIAT_DECIMALS_WITH_ZEROS
|
||||
: GUIUtil.CRYPTOS_DECIMALS_WITH_ZEROS;
|
||||
return CurrencyUtil.isVolumeRoundedToNearestUnit(offer.getCurrencyCode())
|
||||
? GUIUtil.NUM_DECIMALS_UNIT
|
||||
: GUIUtil.NUM_DECIMALS_PRECISE;
|
||||
}
|
||||
|
||||
public int getZeroDecimalsForPrice(Offer offer) {
|
||||
return offer.isFiatOffer()
|
||||
? GUIUtil.FIAT_PRICE_DECIMALS_WITH_ZEROS
|
||||
: GUIUtil.CRYPTOS_DECIMALS_WITH_ZEROS;
|
||||
return CurrencyUtil.isPricePrecise(offer.getCurrencyCode())
|
||||
? GUIUtil.NUM_DECIMALS_PRECISE
|
||||
: GUIUtil.NUM_DECIMALS_PRICE_LESS_PRECISE;
|
||||
}
|
||||
|
||||
public String getPrice(Offer offer) {
|
||||
|
|
|
@ -32,7 +32,6 @@ import haveno.core.offer.OfferDirection;
|
|||
import haveno.core.offer.OfferUtil;
|
||||
import haveno.core.offer.OpenOfferManager;
|
||||
import haveno.core.payment.PaymentAccount;
|
||||
import haveno.core.payment.payload.PaymentMethod;
|
||||
import haveno.core.provider.price.PriceFeedService;
|
||||
import haveno.core.trade.HavenoUtils;
|
||||
import haveno.core.trade.handlers.TransactionResultHandler;
|
||||
|
@ -685,8 +684,4 @@ public abstract class MutableOfferDataModel extends OfferDataModel {
|
|||
public void setReserveExactAmount(boolean reserveExactAmount) {
|
||||
this.reserveExactAmount = reserveExactAmount;
|
||||
}
|
||||
|
||||
public boolean isUsingRoundedAtmCashAccount() {
|
||||
return PaymentMethod.isRoundedForAtmCash(paymentAccount.getPaymentMethod().getId());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -47,8 +47,8 @@ import haveno.core.util.PriceUtil;
|
|||
import haveno.core.util.VolumeUtil;
|
||||
import haveno.core.util.coin.CoinFormatter;
|
||||
import haveno.core.util.coin.CoinUtil;
|
||||
import haveno.core.util.validation.NonFiatPriceValidator;
|
||||
import haveno.core.util.validation.FiatPriceValidator;
|
||||
import haveno.core.util.validation.AmountValidator8Decimals;
|
||||
import haveno.core.util.validation.AmountValidator4Decimals;
|
||||
import haveno.core.util.validation.InputValidator;
|
||||
import haveno.core.util.validation.MonetaryValidator;
|
||||
import haveno.core.xmr.wallet.Restrictions;
|
||||
|
@ -95,8 +95,8 @@ public abstract class MutableOfferViewModel<M extends MutableOfferDataModel> ext
|
|||
private final Preferences preferences;
|
||||
protected final CoinFormatter btcFormatter;
|
||||
private final FiatVolumeValidator fiatVolumeValidator;
|
||||
private final FiatPriceValidator fiatPriceValidator;
|
||||
private final NonFiatPriceValidator nonFiatPriceValidator;
|
||||
private final AmountValidator4Decimals amountValidator4Decimals;
|
||||
private final AmountValidator8Decimals amountValidator8Decimals;
|
||||
protected final OfferUtil offerUtil;
|
||||
|
||||
private String amountDescription;
|
||||
|
@ -184,8 +184,8 @@ public abstract class MutableOfferViewModel<M extends MutableOfferDataModel> ext
|
|||
@Inject
|
||||
public MutableOfferViewModel(M dataModel,
|
||||
FiatVolumeValidator fiatVolumeValidator,
|
||||
FiatPriceValidator fiatPriceValidator,
|
||||
NonFiatPriceValidator nonFiatPriceValidator,
|
||||
AmountValidator4Decimals amountValidator4Decimals,
|
||||
AmountValidator8Decimals amountValidator8Decimals,
|
||||
XmrValidator btcValidator,
|
||||
SecurityDepositValidator securityDepositValidator,
|
||||
PriceFeedService priceFeedService,
|
||||
|
@ -197,8 +197,8 @@ public abstract class MutableOfferViewModel<M extends MutableOfferDataModel> ext
|
|||
super(dataModel);
|
||||
|
||||
this.fiatVolumeValidator = fiatVolumeValidator;
|
||||
this.fiatPriceValidator = fiatPriceValidator;
|
||||
this.nonFiatPriceValidator = nonFiatPriceValidator;
|
||||
this.amountValidator4Decimals = amountValidator4Decimals;
|
||||
this.amountValidator8Decimals = amountValidator8Decimals;
|
||||
this.xmrValidator = btcValidator;
|
||||
this.securityDepositValidator = securityDepositValidator;
|
||||
this.priceFeedService = priceFeedService;
|
||||
|
@ -763,7 +763,7 @@ public abstract class MutableOfferViewModel<M extends MutableOfferDataModel> ext
|
|||
InputValidator.ValidationResult result = PriceUtil.isTriggerPriceValid(triggerPriceAsString,
|
||||
marketPrice,
|
||||
dataModel.isSellOffer(),
|
||||
dataModel.isTraditionalCurrency()
|
||||
dataModel.getCurrencyCode()
|
||||
);
|
||||
triggerPriceValidationResult.set(result);
|
||||
updateButtonDisableState();
|
||||
|
@ -1175,16 +1175,20 @@ public abstract class MutableOfferViewModel<M extends MutableOfferDataModel> ext
|
|||
return getVolumeValidator().validate(input);
|
||||
}
|
||||
|
||||
// TODO: replace with PriceUtils and VolumeUtils?
|
||||
|
||||
private MonetaryValidator getPriceValidator() {
|
||||
return CurrencyUtil.isFiatCurrency(getTradeCurrency().getCode()) ? fiatPriceValidator : nonFiatPriceValidator;
|
||||
return CurrencyUtil.isPricePrecise(getTradeCurrency().getCode()) ? amountValidator8Decimals : amountValidator4Decimals;
|
||||
}
|
||||
|
||||
private MonetaryValidator getVolumeValidator() {
|
||||
final String code = getTradeCurrency().getCode();
|
||||
if (CurrencyUtil.isFiatCurrency(code)) {
|
||||
return fiatVolumeValidator;
|
||||
} else if (CurrencyUtil.isVolumeRoundedToNearestUnit(code)) {
|
||||
return amountValidator4Decimals;
|
||||
} else {
|
||||
return nonFiatPriceValidator;
|
||||
return amountValidator8Decimals;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -27,8 +27,8 @@ import haveno.core.provider.price.PriceFeedService;
|
|||
import haveno.core.user.Preferences;
|
||||
import haveno.core.util.FormattingUtils;
|
||||
import haveno.core.util.coin.CoinFormatter;
|
||||
import haveno.core.util.validation.NonFiatPriceValidator;
|
||||
import haveno.core.util.validation.FiatPriceValidator;
|
||||
import haveno.core.util.validation.AmountValidator8Decimals;
|
||||
import haveno.core.util.validation.AmountValidator4Decimals;
|
||||
import haveno.desktop.Navigation;
|
||||
import haveno.desktop.common.model.ViewModel;
|
||||
import haveno.desktop.main.offer.MutableOfferViewModel;
|
||||
|
@ -40,8 +40,8 @@ class CreateOfferViewModel extends MutableOfferViewModel<CreateOfferDataModel> i
|
|||
@Inject
|
||||
public CreateOfferViewModel(CreateOfferDataModel dataModel,
|
||||
FiatVolumeValidator fiatVolumeValidator,
|
||||
FiatPriceValidator fiatPriceValidator,
|
||||
NonFiatPriceValidator nonFiatPriceValidator,
|
||||
AmountValidator4Decimals priceValidator4Decimals,
|
||||
AmountValidator8Decimals priceValidator8Decimals,
|
||||
XmrValidator btcValidator,
|
||||
SecurityDepositValidator securityDepositValidator,
|
||||
PriceFeedService priceFeedService,
|
||||
|
@ -52,8 +52,8 @@ class CreateOfferViewModel extends MutableOfferViewModel<CreateOfferDataModel> i
|
|||
OfferUtil offerUtil) {
|
||||
super(dataModel,
|
||||
fiatVolumeValidator,
|
||||
fiatPriceValidator,
|
||||
nonFiatPriceValidator,
|
||||
priceValidator4Decimals,
|
||||
priceValidator8Decimals,
|
||||
btcValidator,
|
||||
securityDepositValidator,
|
||||
priceFeedService,
|
||||
|
|
|
@ -427,7 +427,7 @@ abstract class OfferBookViewModel extends ActivatableViewModel {
|
|||
}
|
||||
|
||||
int getNumberOfDecimalsForVolume(OfferBookListItem item) {
|
||||
return item.getOffer().isFiatOffer() ? GUIUtil.FIAT_DECIMALS_WITH_ZEROS : GUIUtil.CRYPTOS_DECIMALS_WITH_ZEROS;
|
||||
return CurrencyUtil.isVolumeRoundedToNearestUnit(item.getOffer().getCurrencyCode()) ? GUIUtil.NUM_DECIMALS_UNIT : GUIUtil.NUM_DECIMALS_PRECISE;
|
||||
}
|
||||
|
||||
String getPaymentMethod(OfferBookListItem item) {
|
||||
|
|
|
@ -311,9 +311,7 @@ class TakeOfferViewModel extends ActivatableWithDataModel<TakeOfferDataModel> im
|
|||
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
|
||||
BigInteger roundedAmount = dataModel.getOffer().isFiatOffer() ?
|
||||
CoinUtil.getRoundedFiatAmount(dataModel.getAmount().get(), tradePrice, maxTradeLimit) :
|
||||
CoinUtil.getRoundedTraditionalAmount(dataModel.getAmount().get(), tradePrice, maxTradeLimit);
|
||||
BigInteger roundedAmount = CoinUtil.getRoundedAmount(dataModel.getAmount().get(), tradePrice, maxTradeLimit, dataModel.getOffer().getCurrencyCode(), dataModel.getOffer().getPaymentMethodId());
|
||||
dataModel.applyAmount(roundedAmount);
|
||||
}
|
||||
amount.set(HavenoUtils.formatXmr(dataModel.getAmount().get()));
|
||||
|
@ -582,9 +580,7 @@ class TakeOfferViewModel extends ActivatableWithDataModel<TakeOfferDataModel> im
|
|||
&& !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 = dataModel.getOffer().isFiatOffer() ?
|
||||
CoinUtil.getRoundedFiatAmount(amount, price, maxTradeLimit) :
|
||||
CoinUtil.getRoundedTraditionalAmount(amount, price, maxTradeLimit);
|
||||
amount = CoinUtil.getRoundedAmount(dataModel.getAmount().get(), price, maxTradeLimit, dataModel.getOffer().getCurrencyCode(), dataModel.getOffer().getPaymentMethodId());
|
||||
}
|
||||
}
|
||||
dataModel.applyAmount(amount);
|
||||
|
|
|
@ -29,8 +29,8 @@ import haveno.core.provider.price.PriceFeedService;
|
|||
import haveno.core.user.Preferences;
|
||||
import haveno.core.util.FormattingUtils;
|
||||
import haveno.core.util.coin.CoinFormatter;
|
||||
import haveno.core.util.validation.NonFiatPriceValidator;
|
||||
import haveno.core.util.validation.FiatPriceValidator;
|
||||
import haveno.core.util.validation.AmountValidator8Decimals;
|
||||
import haveno.core.util.validation.AmountValidator4Decimals;
|
||||
import haveno.desktop.Navigation;
|
||||
import haveno.desktop.main.offer.MutableOfferViewModel;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
@ -43,8 +43,8 @@ class DuplicateOfferViewModel extends MutableOfferViewModel<DuplicateOfferDataMo
|
|||
@Inject
|
||||
public DuplicateOfferViewModel(DuplicateOfferDataModel dataModel,
|
||||
FiatVolumeValidator fiatVolumeValidator,
|
||||
FiatPriceValidator fiatPriceValidator,
|
||||
NonFiatPriceValidator nonFiatPriceValidator,
|
||||
AmountValidator4Decimals priceValidator4Decimals,
|
||||
AmountValidator8Decimals priceValidator8Decimals,
|
||||
XmrValidator btcValidator,
|
||||
SecurityDepositValidator securityDepositValidator,
|
||||
PriceFeedService priceFeedService,
|
||||
|
@ -55,8 +55,8 @@ class DuplicateOfferViewModel extends MutableOfferViewModel<DuplicateOfferDataMo
|
|||
OfferUtil offerUtil) {
|
||||
super(dataModel,
|
||||
fiatVolumeValidator,
|
||||
fiatPriceValidator,
|
||||
nonFiatPriceValidator,
|
||||
priceValidator4Decimals,
|
||||
priceValidator8Decimals,
|
||||
btcValidator,
|
||||
securityDepositValidator,
|
||||
priceFeedService,
|
||||
|
|
|
@ -31,8 +31,8 @@ import haveno.core.user.Preferences;
|
|||
import haveno.core.util.FormattingUtils;
|
||||
import haveno.core.util.PriceUtil;
|
||||
import haveno.core.util.coin.CoinFormatter;
|
||||
import haveno.core.util.validation.NonFiatPriceValidator;
|
||||
import haveno.core.util.validation.FiatPriceValidator;
|
||||
import haveno.core.util.validation.AmountValidator8Decimals;
|
||||
import haveno.core.util.validation.AmountValidator4Decimals;
|
||||
import haveno.desktop.Navigation;
|
||||
import haveno.desktop.main.offer.MutableOfferViewModel;
|
||||
|
||||
|
@ -43,8 +43,8 @@ class EditOfferViewModel extends MutableOfferViewModel<EditOfferDataModel> {
|
|||
@Inject
|
||||
public EditOfferViewModel(EditOfferDataModel dataModel,
|
||||
FiatVolumeValidator fiatVolumeValidator,
|
||||
FiatPriceValidator fiatPriceValidator,
|
||||
NonFiatPriceValidator nonFiatPriceValidator,
|
||||
AmountValidator4Decimals priceValidator4Decimals,
|
||||
AmountValidator8Decimals priceValidator8Decimals,
|
||||
XmrValidator btcValidator,
|
||||
SecurityDepositValidator securityDepositValidator,
|
||||
PriceFeedService priceFeedService,
|
||||
|
@ -55,8 +55,8 @@ class EditOfferViewModel extends MutableOfferViewModel<EditOfferDataModel> {
|
|||
OfferUtil offerUtil) {
|
||||
super(dataModel,
|
||||
fiatVolumeValidator,
|
||||
fiatPriceValidator,
|
||||
nonFiatPriceValidator,
|
||||
priceValidator4Decimals,
|
||||
priceValidator8Decimals,
|
||||
btcValidator,
|
||||
securityDepositValidator,
|
||||
priceFeedService,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue