Skip to content

Commit

Permalink
fixes to editing offers #1011
Browse files Browse the repository at this point in the history
  • Loading branch information
woodser committed Jun 10, 2024
1 parent 57948b3 commit 438e8d4
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -703,7 +703,15 @@ private void createListeners() {
marketBasedPriceTextField.clear();
volumeTextField.clear();
triggerPriceInputTextField.clear();
initWithData(model.dataModel.direction, model.getTradeCurrency(), offerActionHandler);
if (!CurrencyUtil.isTraditionalCurrency(newValue)) {
if (model.isShownAsBuyOffer()) {
placeOfferButton.updateText(Res.get("createOffer.placeOfferButtonCrypto", Res.get("shared.buy"),
model.getTradeCurrency().getCode()));
} else {
placeOfferButton.updateText(Res.get("createOffer.placeOfferButtonCrypto", Res.get("shared.sell"),
model.getTradeCurrency().getCode()));
}
}
};

placeOfferCompletedListener = (o, oldValue, newValue) -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,9 @@ private void loadView(Class<? extends View> viewClass, @Nullable Object data) {
} else if (view instanceof FailedTradesView) {
currentTab = failedTradesTab;
} else if (view instanceof EditOfferView) {
if (data instanceof OpenOffer) {
openOffer = (OpenOffer) data;
}
if (openOffer != null) {
if (editOfferView == null) {
editOfferView = (EditOfferView) view;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
package haveno.desktop.main.portfolio.openoffer;

import com.google.inject.Inject;
import haveno.common.UserThread;
import haveno.common.handlers.ErrorMessageHandler;
import haveno.common.handlers.ResultHandler;
import haveno.core.offer.Offer;
Expand Down Expand Up @@ -46,9 +47,8 @@ class OpenOffersDataModel extends ActivatableDataModel {
public OpenOffersDataModel(OpenOfferManager openOfferManager, PriceFeedService priceFeedService) {
this.openOfferManager = openOfferManager;
this.priceFeedService = priceFeedService;

tradesListChangeListener = change -> applyList();
currenciesUpdateFlagPropertyListener = (observable, oldValue, newValue) -> applyList();
tradesListChangeListener = change -> UserThread.execute(() -> applyList());
currenciesUpdateFlagPropertyListener = (observable, oldValue, newValue) -> UserThread.execute(() -> applyList());
}

@Override
Expand Down Expand Up @@ -85,7 +85,7 @@ public OfferDirection getDirection(Offer offer) {
return openOfferManager.isMyOffer(offer) ? offer.getDirection() : offer.getMirroredDirection();
}

private void applyList() {
private synchronized void applyList() {
list.clear();

list.addAll(openOfferManager.getOpenOffers().stream().map(OpenOfferListItem::new).collect(Collectors.toList()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,6 @@
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.util.Callback;
import org.fxmisc.easybind.EasyBind;
import org.fxmisc.easybind.Subscription;
import org.jetbrains.annotations.NotNull;

@FxmlView
Expand Down Expand Up @@ -113,7 +111,7 @@ public class OpenOffersView extends ActivatableViewAndModel<VBox, OpenOffersView
private PortfolioView.OpenOfferActionHandler openOfferActionHandler;
private ChangeListener<Number> widthListener;

private Map<String, Subscription> offerStateSubscriptions = new HashMap<String, Subscription>();
private Map<String, ChangeListener<OpenOffer.State>> offerStateChangeListeners = new HashMap<String, ChangeListener<OpenOffer.State>>();

@Inject
public OpenOffersView(OpenOffersViewModel model, Navigation navigation, OfferDetailsWindow offerDetailsWindow) {
Expand Down Expand Up @@ -702,11 +700,16 @@ public void updateItem(final OpenOfferListItem item, boolean empty) {
super.updateItem(item, empty);
if (item != null && !empty) {
OpenOffer openOffer = item.getOpenOffer();
if (!offerStateSubscriptions.containsKey(openOffer.getId())) {
offerStateSubscriptions.put(openOffer.getId(), EasyBind.subscribe(openOffer.stateProperty(), state -> {
refresh();
}));

// refresh on state change
if (offerStateChangeListeners.containsKey(openOffer.getId())) {
openOffer.stateProperty().removeListener(offerStateChangeListeners.get(openOffer.getId()));
offerStateChangeListeners.remove(openOffer.getId());
}
ChangeListener<OpenOffer.State> listener = (observable, oldValue, newValue) -> { if (oldValue != newValue) refresh(); };
offerStateChangeListeners.put(openOffer.getId(), listener);
openOffer.stateProperty().addListener(listener);

if (openOffer.getState() == OpenOffer.State.SCHEDULED) {
setGraphic(new AutoTooltipLabel(Res.get("shared.pending")));
return;
Expand Down

0 comments on commit 438e8d4

Please sign in to comment.