refactor offer tabs to fiat, bitcoin, other (with gold and silver)

This commit is contained in:
woodser 2023-05-19 14:08:53 -04:00
parent a31b73d676
commit 5aba26ff82
36 changed files with 204 additions and 148 deletions

View file

@ -73,6 +73,18 @@ public class CurrencyUtil {
CurrencyUtil.baseCurrencyCode = baseCurrencyCode;
}
public static Collection<TraditionalCurrency> getAllSortedFiatCurrencies(Comparator comparator) {
return getAllSortedTraditionalCurrencies(comparator).stream()
.filter(currency -> CurrencyUtil.isFiatCurrency(currency.getCode()))
.collect(Collectors.toList()); // sorted by currency name
}
public static List<TradeCurrency> getAllFiatCurrencies() {
return getAllTraditionalCurrencies().stream()
.filter(currency -> CurrencyUtil.isFiatCurrency(currency.getCode()))
.collect(Collectors.toList()); // sorted by currency name
}
public static Collection<TraditionalCurrency> getAllSortedTraditionalCurrencies() {
return traditionalCurrencyMapSupplier.get().values(); // sorted by currency name
}
@ -98,8 +110,7 @@ public class CurrencyUtil {
.collect(Collectors.toMap(TradeCurrency::getCode, Function.identity(), (x, y) -> x, LinkedHashMap::new));
}
public static List<TraditionalCurrency> getMainTraditionalCurrencies() {
TradeCurrency defaultTradeCurrency = getDefaultTradeCurrency();
public static List<TraditionalCurrency> getMainFiatCurrencies() {
List<TraditionalCurrency> list = new ArrayList<>();
list.add(new TraditionalCurrency("USD"));
list.add(new TraditionalCurrency("EUR"));
@ -109,18 +120,28 @@ public class CurrencyUtil {
list.add(new TraditionalCurrency("RUB"));
list.add(new TraditionalCurrency("INR"));
list.add(new TraditionalCurrency("NGN"));
postProcessTraditionalCurrenciesList(list);
return list;
}
public static List<TraditionalCurrency> getMainTraditionalCurrencies() {
List<TraditionalCurrency> list = getMainFiatCurrencies();
list.add(new TraditionalCurrency("XAG"));
list.add(new TraditionalCurrency("XAU"));
postProcessTraditionalCurrenciesList(list);
return list;
}
private static void postProcessTraditionalCurrenciesList(List<TraditionalCurrency> list) {
list.sort(TradeCurrency::compareTo);
TradeCurrency defaultTradeCurrency = getDefaultTradeCurrency();
TraditionalCurrency defaultTraditionalCurrency =
defaultTradeCurrency instanceof TraditionalCurrency ? (TraditionalCurrency) defaultTradeCurrency : null;
if (defaultTraditionalCurrency != null && list.contains(defaultTraditionalCurrency)) {
list.remove(defaultTradeCurrency);
list.add(0, defaultTraditionalCurrency);
}
return list;
}
public static Collection<CryptoCurrency> getAllSortedCryptoCurrencies() {

View file

@ -30,7 +30,7 @@ import java.util.List;
public final class CashDepositAccount extends CountryBasedPaymentAccount implements SameCountryRestrictedBankAccount {
public static final List<TradeCurrency> SUPPORTED_CURRENCIES = CurrencyUtil.getAllTraditionalCurrencies();
public static final List<TradeCurrency> SUPPORTED_CURRENCIES = CurrencyUtil.getAllFiatCurrencies();
public CashDepositAccount() {
super(PaymentMethod.CASH_DEPOSIT);

View file

@ -32,7 +32,7 @@ import java.util.List;
@EqualsAndHashCode(callSuper = true)
public final class NationalBankAccount extends CountryBasedPaymentAccount implements SameCountryRestrictedBankAccount {
public static final List<TradeCurrency> SUPPORTED_CURRENCIES = CurrencyUtil.getAllTraditionalCurrencies();
public static final List<TradeCurrency> SUPPORTED_CURRENCIES = CurrencyUtil.getAllFiatCurrencies();
public NationalBankAccount() {
super(PaymentMethod.NATIONAL_BANK);

View file

@ -117,6 +117,10 @@ public abstract class PaymentAccount implements PersistablePayload {
paymentAccountPayload = payload;
}
public boolean isFiat() {
return getSingleTradeCurrency() == null || CurrencyUtil.isFiatCurrency(getSingleTradeCurrency().getCode()); // TODO: check if trade currencies contain fiat
}
///////////////////////////////////////////////////////////////////////////////////////////
// PROTO BUFFER

View file

@ -32,7 +32,7 @@ import java.util.List;
@EqualsAndHashCode(callSuper = true)
public final class SameBankAccount extends CountryBasedPaymentAccount implements BankNameRestrictedBankAccount, SameCountryRestrictedBankAccount {
public static final List<TradeCurrency> SUPPORTED_CURRENCIES = CurrencyUtil.getAllTraditionalCurrencies();
public static final List<TradeCurrency> SUPPORTED_CURRENCIES = CurrencyUtil.getAllFiatCurrencies();
public SameBankAccount() {
super(PaymentMethod.SAME_BANK);

View file

@ -32,7 +32,7 @@ import java.util.List;
@EqualsAndHashCode(callSuper = true)
public final class SpecificBanksAccount extends CountryBasedPaymentAccount implements BankNameRestrictedBankAccount, SameCountryRestrictedBankAccount {
public static final List<TradeCurrency> SUPPORTED_CURRENCIES = CurrencyUtil.getAllTraditionalCurrencies();
public static final List<TradeCurrency> SUPPORTED_CURRENCIES = CurrencyUtil.getAllFiatCurrencies();
public SpecificBanksAccount() {
super(PaymentMethod.SPECIFIC_BANKS);

View file

@ -18,6 +18,7 @@
package haveno.core.payment;
import haveno.core.api.model.PaymentAccountFormField;
import haveno.core.locale.CurrencyUtil;
import haveno.core.locale.TradeCurrency;
import haveno.core.payment.payload.PaymentAccountPayload;
import haveno.core.payment.payload.PaymentMethod;
@ -28,13 +29,12 @@ import lombok.NonNull;
import java.util.ArrayList;
import java.util.List;
import static haveno.core.locale.CurrencyUtil.getAllSortedTraditionalCurrencies;
import static java.util.Comparator.comparing;
@EqualsAndHashCode(callSuper = true)
public final class SwiftAccount extends PaymentAccount {
public static final List<TradeCurrency> SUPPORTED_CURRENCIES = new ArrayList<>(getAllSortedTraditionalCurrencies(comparing(TradeCurrency::getCode)));
public static final List<TradeCurrency> SUPPORTED_CURRENCIES = new ArrayList<>(CurrencyUtil.getAllSortedFiatCurrencies(comparing(TradeCurrency::getCode)));
private static final List<PaymentAccountFormField.FieldId> INPUT_FIELD_IDS = List.of(
PaymentAccountFormField.FieldId.ACCOUNT_NAME,

View file

@ -29,7 +29,7 @@ import java.util.List;
public final class WesternUnionAccount extends CountryBasedPaymentAccount {
public static final List<TradeCurrency> SUPPORTED_CURRENCIES = CurrencyUtil.getAllTraditionalCurrencies();
public static final List<TradeCurrency> SUPPORTED_CURRENCIES = CurrencyUtil.getAllFiatCurrencies();
public WesternUnionAccount() {
super(PaymentMethod.WESTERN_UNION);

View file

@ -387,6 +387,7 @@ public final class PaymentMethod implements PersistablePayload, Comparable<Payme
private final long maxTradeLimit;
// list of asset codes the payment method supports
@Getter
private List<String> supportedAssetCodes;

View file

@ -225,7 +225,7 @@ public final class Preferences implements PersistedDataHost, BridgeAddressProvid
GlobalSettings.setUseAnimations(prefPayload.isUseAnimations());
TradeCurrency preferredTradeCurrency = checkNotNull(prefPayload.getPreferredTradeCurrency(), "preferredTradeCurrency must not be null");
setPreferredTradeCurrency(preferredTradeCurrency);
setFiatCurrencies(prefPayload.getTraditionalCurrencies());
setTraditionalCurrencies(prefPayload.getTraditionalCurrencies());
setCryptoCurrencies(prefPayload.getCryptoCurrencies());
GlobalSettings.setDefaultTradeCurrency(preferredTradeCurrency);
@ -255,7 +255,7 @@ public final class Preferences implements PersistedDataHost, BridgeAddressProvid
}
prefPayload.setPreferredTradeCurrency(preferredTradeCurrency);
setFiatCurrencies(CurrencyUtil.getMainTraditionalCurrencies());
setTraditionalCurrencies(CurrencyUtil.getMainFiatCurrencies());
setCryptoCurrencies(CurrencyUtil.getMainCryptoCurrencies());
BaseCurrencyNetwork baseCurrencyNetwork = Config.baseCurrencyNetwork();
@ -608,9 +608,9 @@ public final class Preferences implements PersistedDataHost, BridgeAddressProvid
requestPersistence();
}
private void setFiatCurrencies(List<TraditionalCurrency> currencies) {
public void setTraditionalCurrencies(List<TraditionalCurrency> currencies) {
traditionalCurrenciesAsObservable.setAll(currencies.stream()
.map(fiatCurrency -> new TraditionalCurrency(fiatCurrency.getCurrency()))
.map(traditionalCurrency -> new TraditionalCurrency(traditionalCurrency.getCurrency()))
.distinct().collect(Collectors.toList()));
requestPersistence();
}
@ -909,7 +909,7 @@ public final class Preferences implements PersistedDataHost, BridgeAddressProvid
void setPayFeeInXmr(boolean payFeeInXmr);
void setFiatCurrencies(List<TraditionalCurrency> currencies);
void setTraditionalCurrencies(List<TraditionalCurrency> currencies);
void setCryptoCurrencies(List<CryptoCurrency> currencies);