Fix bug with not rePublished offers. Update offerbook when offer gets removed. Add pref. language and currency to preferences

This commit is contained in:
Manfred Karrer 2015-12-20 23:05:42 +01:00
parent b1c4d7b636
commit 3222019480
13 changed files with 184 additions and 36 deletions

View file

@ -119,7 +119,7 @@ public class CountryUtil {
}
public static Country getDefaultCountry() {
final Locale locale = new Locale(LanguageUtil.getDefaultLanguage(), getDefaultCountryCode());
final Locale locale = Preferences.getDefaultLocale();
String regionCode = getRegionCode(locale.getCountry());
final Region region = new Region(regionCode, getRegionName(regionCode));
return new Country(locale.getCountry(), locale.getDisplayCountry(), region);
@ -205,7 +205,6 @@ public class CountryUtil {
}
}
public static String getDefaultCountryCode() {
// might be set later in pref or config, so not use Preferences.getDefaultLocale() anywhere in the code
return Preferences.getDefaultLocale().getCountry();

View file

@ -205,8 +205,8 @@ public class CurrencyUtil {
}
}
public static FiatCurrency getDefaultFiatCurrency() {
return new FiatCurrency(getCurrencyByCountryCode(CountryUtil.getDefaultCountryCode()).getCurrency());
public static TradeCurrency getDefaultTradeCurrency() {
return Preferences.getDefaultTradeCurrency();
}
}

View file

@ -52,7 +52,20 @@ public class OfferBookService {
}
public void addOffer(Offer offer, ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) {
boolean result = p2PService.addData(offer);
doAddOffer(offer, resultHandler, errorMessageHandler, false);
}
public void republishOffer(Offer offer, ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) {
doAddOffer(offer, resultHandler, errorMessageHandler, true);
}
private void doAddOffer(Offer offer, ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler, boolean rePublish) {
boolean result;
if (rePublish)
result = p2PService.republishData(offer);
else
result = p2PService.addData(offer);
if (result) {
log.trace("Add offer to network was successful. Offer = " + offer);
resultHandler.handleResult();

View file

@ -146,7 +146,7 @@ public class OpenOfferManager {
if (p2PNetworkReadyListener != null)
p2PService.removeP2PServiceListener(p2PNetworkReadyListener);
long period = (long) (Offer.TTL * 0.8);
long period = (long) (Offer.TTL * 0.8); // republish sufficiently before offer would expires
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
@ -165,7 +165,7 @@ public class OpenOfferManager {
private void rePublishOffers() {
if (!openOffers.isEmpty()) log.trace("rePublishOffers");
for (OpenOffer openOffer : openOffers) {
offerBookService.addOffer(openOffer.getOffer(),
offerBookService.republishOffer(openOffer.getOffer(),
() -> log.debug("Successful added offer to P2P network"),
errorMessage -> log.error("Add offer to P2P network failed. " + errorMessage));
//setupDepositPublishedListener(openOffer);

View file

@ -20,6 +20,7 @@ package io.bitsquare.user;
import io.bitsquare.app.BitsquareEnvironment;
import io.bitsquare.app.Version;
import io.bitsquare.btc.BitcoinNetwork;
import io.bitsquare.locale.CountryUtil;
import io.bitsquare.locale.CurrencyUtil;
import io.bitsquare.locale.TradeCurrency;
import io.bitsquare.storage.Storage;
@ -67,9 +68,16 @@ public class Preferences implements Serializable {
return BTC_DENOMINATIONS;
}
private transient static Locale defaultLocale = Locale.getDefault();
public static Locale getDefaultLocale() {
//return new Locale("EN", "US");
return Locale.getDefault();
return defaultLocale;
}
private transient static TradeCurrency defaultTradeCurrency = new TradeCurrency(CurrencyUtil.getCurrencyByCountryCode(CountryUtil.getDefaultCountryCode()).getCurrency().getCurrencyCode());
public static TradeCurrency getDefaultTradeCurrency() {
return defaultTradeCurrency;
}
transient private final Storage<Preferences> storage;
@ -92,6 +100,8 @@ public class Preferences implements Serializable {
private boolean autoSelectArbitrators = true;
private Map<String, Boolean> showAgainMap;
private boolean tacAccepted;
private Locale preferredLocale;
private TradeCurrency preferredTradeCurrency;
// Observable wrappers
transient private final StringProperty btcDenominationProperty = new SimpleStringProperty(btcDenomination);
@ -134,6 +144,11 @@ public class Preferences implements Serializable {
autoSelectArbitrators = persisted.getAutoSelectArbitrators();
showAgainMap = persisted.getShowAgainMap();
tacAccepted = persisted.getTacAccepted();
preferredLocale = persisted.getPreferredLocale();
defaultLocale = preferredLocale;
preferredTradeCurrency = persisted.getPreferredTradeCurrency();
defaultTradeCurrency = preferredTradeCurrency;
} else {
setTradeCurrencies(CurrencyUtil.getAllSortedCurrencies());
tradeCurrencies = new ArrayList<>(tradeCurrenciesAsObservable);
@ -148,6 +163,8 @@ public class Preferences implements Serializable {
showAgainMap.put(PopupId.PAYMENT_SENT, true);
showAgainMap.put(PopupId.PAYMENT_RECEIVED, true);
preferredLocale = getDefaultLocale();
preferredTradeCurrency = getDefaultTradeCurrency();
storage.queueUpForSave();
}
@ -250,6 +267,19 @@ public class Preferences implements Serializable {
storage.queueUpForSave();
}
public void setPreferredLocale(Locale preferredLocale) {
this.preferredLocale = preferredLocale;
defaultLocale = preferredLocale;
storage.queueUpForSave();
}
public void setPreferredTradeCurrency(TradeCurrency preferredTradeCurrency) {
this.preferredTradeCurrency = preferredTradeCurrency;
defaultTradeCurrency = preferredTradeCurrency;
storage.queueUpForSave();
}
///////////////////////////////////////////////////////////////////////////////////////////
// Getter
///////////////////////////////////////////////////////////////////////////////////////////
@ -360,4 +390,12 @@ public class Preferences implements Serializable {
public boolean getTacAccepted() {
return tacAccepted;
}
public Locale getPreferredLocale() {
return preferredLocale;
}
public TradeCurrency getPreferredTradeCurrency() {
return preferredTradeCurrency;
}
}

View file

@ -102,8 +102,11 @@ public class User implements Serializable {
} else {
accountID = String.valueOf(Math.abs(keyRing.getPubKeyRing().hashCode()));
acceptedLanguageLocaleCodes = new ArrayList<>(Arrays.asList(LanguageUtil.getDefaultLanguageLocaleAsCode(),
LanguageUtil.getEnglishLanguageLocaleCode()));
acceptedLanguageLocaleCodes.add(LanguageUtil.getDefaultLanguageLocaleAsCode());
String english = LanguageUtil.getEnglishLanguageLocaleCode();
if (!acceptedLanguageLocaleCodes.contains(english))
acceptedLanguageLocaleCodes.add(english);
acceptedArbitrators = new ArrayList<>();
}
storage.queueUpForSave();