From 82325f615fd6e568b487d67959e59790af0173cf Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Wed, 19 Nov 2014 18:03:26 +0100 Subject: [PATCH] Fix missing update for trade state (#285) --- .../portfolio/pending/PendingTradesModel.java | 31 +++++++++++++------ .../portfolio/pending/PendingTradesPM.java | 2 +- 2 files changed, 22 insertions(+), 11 deletions(-) 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 9210c11fec..001a297008 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 @@ -139,7 +139,7 @@ class PendingTradesModel extends UIModel { super.deactivate(); tradeManager.getPendingTrades().removeListener(mapChangeListener); - selectTrade(null); + cleanUpSelectedTrade(); } @@ -149,14 +149,7 @@ class PendingTradesModel extends UIModel { void selectTrade(PendingTradesListItem item) { // clean up previous selectedItem - if (selectedItem != null) { - Trade trade = getTrade(); - trade.stateProperty().removeListener(stateChangeListener); - trade.faultProperty().removeListener(faultChangeListener); - - if (txConfidenceListener != null) - walletService.removeTxConfidenceListener(txConfidenceListener); - } + cleanUpSelectedTrade(); selectedItem = item; @@ -177,7 +170,14 @@ class PendingTradesModel extends UIModel { updateConfidence(walletService.getConfidenceForTxId(txId.get())); trade.stateProperty().addListener(stateChangeListener); - tradeState.set(trade.stateProperty().get()); + + // 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()); @@ -322,6 +322,17 @@ class PendingTradesModel extends UIModel { } } + private void cleanUpSelectedTrade() { + if (selectedItem != null) { + Trade trade = getTrade(); + trade.stateProperty().removeListener(stateChangeListener); + trade.faultProperty().removeListener(faultChangeListener); + } + + if (txConfidenceListener != null) + walletService.removeTxConfidenceListener(txConfidenceListener); + } + private void sortList() { list.sort((o1, o2) -> o2.getTrade().getDate().compareTo(o1.getTrade().getDate())); } 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 7193c37105..0e5eeb9297 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 @@ -266,7 +266,7 @@ public class PendingTradesPM extends PresentationModel { // TODO error states not implemented yet break; default: - log.warn("unhandled state " + state); + log.warn("unhandled state " + model.tradeState.get()); break; } }