From c57aba7992ba6e887156c1830174fdb2d21c9b79 Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Wed, 19 Nov 2014 20:36:03 +0100 Subject: [PATCH] Fix tradestate problem --- .../processbar/ProcessStepBarSkin.java | 3 --- .../portfolio/pending/PendingTradesModel.java | 16 +++++----------- .../main/portfolio/pending/PendingTradesPM.java | 11 +++++++---- 3 files changed, 12 insertions(+), 18 deletions(-) diff --git a/src/main/java/io/bitsquare/gui/components/processbar/ProcessStepBarSkin.java b/src/main/java/io/bitsquare/gui/components/processbar/ProcessStepBarSkin.java index c22bf9d29f..d43447069b 100644 --- a/src/main/java/io/bitsquare/gui/components/processbar/ProcessStepBarSkin.java +++ b/src/main/java/io/bitsquare/gui/components/processbar/ProcessStepBarSkin.java @@ -157,7 +157,6 @@ class ProcessStepBarSkin extends BehaviorSkinBase, Behavior } public void open() { - log.debug("select " + processStepItem.getLabel()); BorderStroke borderStroke = new BorderStroke(Colors.LIGHT_GREY, BorderStrokeStyle.SOLID, null, new BorderWidths(borderWidth, borderWidth, borderWidth, borderWidth), Insets.EMPTY); this.setBorder(new Border(borderStroke)); @@ -165,7 +164,6 @@ class ProcessStepBarSkin extends BehaviorSkinBase, Behavior } public void current() { - log.debug("select " + processStepItem.getLabel()); BorderStroke borderStroke = new BorderStroke(Colors.GREEN, BorderStrokeStyle.SOLID, null, new BorderWidths(borderWidth, borderWidth, borderWidth, borderWidth), Insets.EMPTY); this.setBorder(new Border(borderStroke)); @@ -173,7 +171,6 @@ class ProcessStepBarSkin extends BehaviorSkinBase, Behavior } public void past() { - log.debug("deSelect " + processStepItem.getLabel()); BorderStroke borderStroke = new BorderStroke(Color.valueOf("#444444"), BorderStrokeStyle.SOLID, null, new BorderWidths(borderWidth, borderWidth, borderWidth, borderWidth), Insets.EMPTY); this.setBorder(new Border(borderStroke)); diff --git a/src/main/java/io/bitsquare/gui/main/portfolio/pending/PendingTradesModel.java b/src/main/java/io/bitsquare/gui/main/portfolio/pending/PendingTradesModel.java index 001a297008..9b6a0bb4a1 100644 --- a/src/main/java/io/bitsquare/gui/main/portfolio/pending/PendingTradesModel.java +++ b/src/main/java/io/bitsquare/gui/main/portfolio/pending/PendingTradesModel.java @@ -157,6 +157,8 @@ class PendingTradesModel extends UIModel { isOfferer = getTrade().getOffer().getMessagePublicKey().equals(user.getMessagePublicKey()); Trade trade = getTrade(); + trade.stateProperty().addListener(stateChangeListener); + tradeState.set(trade.stateProperty().get()); if (trade.getDepositTx() != null) txId.set(trade.getDepositTx().getHashAsString()); @@ -169,16 +171,6 @@ class PendingTradesModel extends UIModel { walletService.addTxConfidenceListener(txConfidenceListener); updateConfidence(walletService.getConfidenceForTxId(txId.get())); - trade.stateProperty().addListener(stateChangeListener); - - // It might be that we receive first the DEPOSIT_CONFIRMED (coming form bitcoin network) - // and then the OFFERER_ACCEPTED (coming from tomP2P network. - // So we don't allow to overwrite the already set DEPOSIT_CONFIRMED as that will only be possible if - // the offer has already accepted - // TODO: The Trade.State handling should be refactored to remove that unclear situation - if (tradeState.get() != Trade.State.DEPOSIT_CONFIRMED) - tradeState.set(trade.stateProperty().get()); - trade.faultProperty().addListener(faultChangeListener); fault.set(trade.faultProperty().get()); } @@ -312,9 +304,11 @@ class PendingTradesModel extends UIModel { /////////////////////////////////////////////////////////////////////////////////////////// private void updateConfidence(TransactionConfidence confidence) { + log.debug("confidence " + confidence); if (confidence != null && confidence.getConfidenceType() == TransactionConfidence.ConfidenceType.BUILDING - && getTrade().getState() == Trade.State.DEPOSIT_PUBLISHED) { + && (getTrade().getState() == Trade.State.DEPOSIT_PUBLISHED || + getTrade().getState() == Trade.State.OFFERER_ACCEPTED)) { // only set it once when actual state is DEPOSIT_PUBLISHED, and remove listener afterwards getTrade().setState(Trade.State.DEPOSIT_CONFIRMED); walletService.removeTxConfidenceListener(txConfidenceListener); diff --git a/src/main/java/io/bitsquare/gui/main/portfolio/pending/PendingTradesPM.java b/src/main/java/io/bitsquare/gui/main/portfolio/pending/PendingTradesPM.java index 0e5eeb9297..21f2cc2ee5 100644 --- a/src/main/java/io/bitsquare/gui/main/portfolio/pending/PendingTradesPM.java +++ b/src/main/java/io/bitsquare/gui/main/portfolio/pending/PendingTradesPM.java @@ -22,6 +22,7 @@ import io.bitsquare.gui.PresentationModel; import io.bitsquare.gui.util.BSFormatter; import io.bitsquare.gui.util.validation.BtcAddressValidator; import io.bitsquare.locale.BSResources; +import io.bitsquare.trade.Trade; import org.bitcoinj.core.Coin; import org.bitcoinj.utils.Fiat; @@ -240,14 +241,16 @@ public class PendingTradesPM extends PresentationModel { return btcAddressValidator; } + /////////////////////////////////////////////////////////////////////////////////////////// // Private /////////////////////////////////////////////////////////////////////////////////////////// private void updateState() { - if (model.tradeState.get() != null) { - log.debug("tradeState " + model.tradeState.get()); - switch (model.tradeState.get()) { + Trade.State tradeState = model.tradeState.get(); + log.trace("tradeState " + tradeState); + if (tradeState != null) { + switch (tradeState) { case DEPOSIT_PUBLISHED: state.set(model.isOfferer() ? State.OFFERER_BUYER_WAIT_TX_CONF : State.TAKER_SELLER_WAIT_TX_CONF); break; @@ -266,7 +269,7 @@ public class PendingTradesPM extends PresentationModel { // TODO error states not implemented yet break; default: - log.warn("unhandled state " + model.tradeState.get()); + log.warn("unhandled state " + tradeState); break; } }