Fix issue with deactivated offers getting published after editing

- Add check if editedOpenOffer is not deactivated to avoid republishing
- Use errorMessageHandler instead of IllegalStateException. We can discuss if you would prefer that style but so far we did not throw exceptions to the UI but rather use error handlers.
- Small cleanups
This commit is contained in:
Manfred Karrer 2018-04-17 12:25:51 -05:00
parent 75e616f9de
commit 3b91f08ce4
No known key found for this signature in database
GPG key ID: 401250966A6B2C46
3 changed files with 17 additions and 30 deletions

View file

@ -105,7 +105,7 @@ public class PortfolioView extends ActivatableViewAndModel<TabPane, Activatable>
navigation.navigateTo(MainView.class, PortfolioView.class, EditOpenOfferView.class);
}
if (oldValue != null && oldValue == editOpenOfferTab && editOpenOfferView != null)
if (oldValue != null && oldValue == editOpenOfferTab)
editOpenOfferView.onTabSelected(false);
};
@ -113,10 +113,8 @@ public class PortfolioView extends ActivatableViewAndModel<TabPane, Activatable>
tabListChangeListener = change -> {
change.next();
List<? extends Tab> removedTabs = change.getRemoved();
if (removedTabs.size() == 1) {
if (removedTabs.get(0).equals(editOpenOfferTab))
onEditOpenOfferRemoved();
}
if (removedTabs.size() == 1 && removedTabs.get(0).equals(editOpenOfferTab))
onEditOpenOfferRemoved();
};
}
@ -173,6 +171,7 @@ public class PortfolioView extends ActivatableViewAndModel<TabPane, Activatable>
private void loadView(Class<? extends View> viewClass) {
// we want to get activate/deactivate called, so we remove the old view on tab change
// TODO Don't understand the check for currentTab != editOpenOfferTab
if (currentTab != null && currentTab != editOpenOfferTab)
currentTab.setContent(null);
@ -189,7 +188,6 @@ public class PortfolioView extends ActivatableViewAndModel<TabPane, Activatable>
} else if (view instanceof EditOpenOfferView) {
if (openOffer != null) {
if (editOpenOfferView == null) {
editOpenOfferView = (EditOpenOfferView) view;
editOpenOfferView.initWithData(openOffer);
editOpenOfferTab = new Tab(Res.get("portfolio.tab.editOpenOffer"));
@ -206,7 +204,6 @@ public class PortfolioView extends ActivatableViewAndModel<TabPane, Activatable>
view = viewLoader.load(OpenOffersView.class);
selectOpenOffersView((OpenOffersView) view);
}
}
currentTab.setContent(view.getRoot());
@ -217,17 +214,13 @@ public class PortfolioView extends ActivatableViewAndModel<TabPane, Activatable>
openOffersView = view;
currentTab = openOffersTab;
OpenOfferActionHandler openOfferActionHandler = new OpenOfferActionHandler() {
@Override
public void onEditOpenOffer(OpenOffer openOffer) {
if (!editOpenOfferViewOpen) {
PortfolioView.this.editOpenOfferViewOpen = true;
PortfolioView.this.openOffer = openOffer;
PortfolioView.this.navigation.navigateTo(MainView.class, PortfolioView.this.getClass(),
EditOpenOfferView.class);
} else {
log.error("You have already a \"Edit Offer\" tab open.");
}
OpenOfferActionHandler openOfferActionHandler = openOffer -> {
if (!editOpenOfferViewOpen) {
editOpenOfferViewOpen = true;
PortfolioView.this.openOffer = openOffer;
navigation.navigateTo(MainView.class, PortfolioView.this.getClass(), EditOpenOfferView.class);
} else {
log.error("You have already a \"Edit Offer\" tab open.");
}
};
openOffersView.setOpenOfferActionHandler(openOfferActionHandler);

View file

@ -38,8 +38,6 @@ import bisq.core.user.DontShowAgainLookup;
import javax.inject.Inject;
import de.jensd.fx.glyphs.materialdesignicons.MaterialDesignIcon;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
@ -61,6 +59,10 @@ import org.jetbrains.annotations.NotNull;
import static bisq.desktop.util.FormBuilder.getIconButton;
import de.jensd.fx.glyphs.materialdesignicons.MaterialDesignIcon;
@FxmlView
public class OpenOffersView extends ActivatableViewAndModel<VBox, OpenOffersViewModel> {

View file

@ -51,11 +51,7 @@ class OpenOffersViewModel extends ActivatableWithDataModel<OpenOffersDataModel>
}
void onActivateOpenOffer(OpenOffer openOffer, ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) {
try {
dataModel.onActivateOpenOffer(openOffer, resultHandler, errorMessageHandler);
} catch (IllegalStateException exception) {
errorMessageHandler.handleErrorMessage(exception.getMessage());
}
dataModel.onActivateOpenOffer(openOffer, resultHandler, errorMessageHandler);
}
void onDeactivateOpenOffer(OpenOffer openOffer, ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) {
@ -63,11 +59,7 @@ class OpenOffersViewModel extends ActivatableWithDataModel<OpenOffersDataModel>
}
void onRemoveOpenOffer(OpenOffer openOffer, ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) {
try {
dataModel.onRemoveOpenOffer(openOffer, resultHandler, errorMessageHandler);
} catch (IllegalStateException exception) {
errorMessageHandler.handleErrorMessage(exception.getMessage());
}
dataModel.onRemoveOpenOffer(openOffer, resultHandler, errorMessageHandler);
}
public ObservableList<OpenOfferListItem> getList() {