fix updating display of current price

This commit is contained in:
woodser 2023-12-10 08:11:14 -05:00
parent c7277187c5
commit 07769fd8d9
3 changed files with 30 additions and 31 deletions

View file

@ -429,14 +429,12 @@ public class MainView extends InitializableView<StackPane, MainViewModel> {
return new ListCell<>() { return new ListCell<>() {
@Override @Override
protected void updateItem(PriceFeedComboBoxItem item, boolean empty) { protected void updateItem(PriceFeedComboBoxItem item, boolean empty) {
UserThread.execute(() -> { super.updateItem(item, empty);
super.updateItem(item, empty); if (!empty && item != null) {
if (!empty && item != null) { textProperty().bind(item.displayStringProperty);
textProperty().bind(item.displayStringProperty); } else {
} else { textProperty().unbind();
textProperty().unbind(); }
}
});
} }
}; };
} }

View file

@ -131,31 +131,33 @@ public class MarketPricePresentation {
}); });
marketPriceBinding.subscribe((observable, oldValue, newValue) -> { marketPriceBinding.subscribe((observable, oldValue, newValue) -> {
if (newValue != null && !newValue.equals(oldValue)) { UserThread.execute(() -> {
setMarketPriceInItems(); if (newValue != null && !newValue.equals(oldValue)) {
setMarketPriceInItems();
String code = priceFeedService.currencyCodeProperty().get(); String code = priceFeedService.currencyCodeProperty().get();
Optional<PriceFeedComboBoxItem> itemOptional = findPriceFeedComboBoxItem(code); Optional<PriceFeedComboBoxItem> itemOptional = findPriceFeedComboBoxItem(code);
if (itemOptional.isPresent()) { if (itemOptional.isPresent()) {
itemOptional.get().setDisplayString(newValue); itemOptional.get().setDisplayString(newValue);
selectedPriceFeedComboBoxItemProperty.set(itemOptional.get()); selectedPriceFeedComboBoxItemProperty.set(itemOptional.get());
} else {
if (CurrencyUtil.isCryptoCurrency(code)) {
CurrencyUtil.getCryptoCurrency(code).ifPresent(cryptoCurrency -> {
preferences.addCryptoCurrency(cryptoCurrency);
fillPriceFeedComboBoxItems();
});
} else { } else {
CurrencyUtil.getTraditionalCurrency(code).ifPresent(traditionalCurrency -> { if (CurrencyUtil.isCryptoCurrency(code)) {
preferences.addTraditionalCurrency(traditionalCurrency); CurrencyUtil.getCryptoCurrency(code).ifPresent(cryptoCurrency -> {
fillPriceFeedComboBoxItems(); preferences.addCryptoCurrency(cryptoCurrency);
}); fillPriceFeedComboBoxItems();
});
} else {
CurrencyUtil.getTraditionalCurrency(code).ifPresent(traditionalCurrency -> {
preferences.addTraditionalCurrency(traditionalCurrency);
fillPriceFeedComboBoxItems();
});
}
} }
}
if (selectedPriceFeedComboBoxItemProperty.get() != null) if (selectedPriceFeedComboBoxItemProperty.get() != null)
selectedPriceFeedComboBoxItemProperty.get().setDisplayString(newValue); selectedPriceFeedComboBoxItemProperty.get().setDisplayString(newValue);
} }
});
}); });
marketPriceCurrencyCode.bind(priceFeedService.currencyCodeProperty()); marketPriceCurrencyCode.bind(priceFeedService.currencyCodeProperty());

View file

@ -17,7 +17,6 @@
package haveno.desktop.main.shared; package haveno.desktop.main.shared;
import haveno.common.UserThread;
import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty; import javafx.beans.property.StringProperty;
import lombok.Getter; import lombok.Getter;
@ -38,6 +37,6 @@ public class PriceFeedComboBoxItem {
} }
public void setDisplayString(String displayString) { public void setDisplayString(String displayString) {
UserThread.execute(() -> this.displayStringProperty.set(displayString)); this.displayStringProperty.set(displayString);
} }
} }