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

View file

@ -38,8 +38,6 @@ import bisq.core.user.DontShowAgainLookup;
import javax.inject.Inject; import javax.inject.Inject;
import de.jensd.fx.glyphs.materialdesignicons.MaterialDesignIcon;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.scene.control.Button; import javafx.scene.control.Button;
@ -61,6 +59,10 @@ import org.jetbrains.annotations.NotNull;
import static bisq.desktop.util.FormBuilder.getIconButton; import static bisq.desktop.util.FormBuilder.getIconButton;
import de.jensd.fx.glyphs.materialdesignicons.MaterialDesignIcon;
@FxmlView @FxmlView
public class OpenOffersView extends ActivatableViewAndModel<VBox, OpenOffersViewModel> { 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) { void onActivateOpenOffer(OpenOffer openOffer, ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) {
try {
dataModel.onActivateOpenOffer(openOffer, resultHandler, errorMessageHandler); dataModel.onActivateOpenOffer(openOffer, resultHandler, errorMessageHandler);
} catch (IllegalStateException exception) {
errorMessageHandler.handleErrorMessage(exception.getMessage());
}
} }
void onDeactivateOpenOffer(OpenOffer openOffer, ResultHandler resultHandler, ErrorMessageHandler 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) { void onRemoveOpenOffer(OpenOffer openOffer, ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) {
try {
dataModel.onRemoveOpenOffer(openOffer, resultHandler, errorMessageHandler); dataModel.onRemoveOpenOffer(openOffer, resultHandler, errorMessageHandler);
} catch (IllegalStateException exception) {
errorMessageHandler.handleErrorMessage(exception.getMessage());
}
} }
public ObservableList<OpenOfferListItem> getList() { public ObservableList<OpenOfferListItem> getList() {