Fix missing update for trade state (#285)

This commit is contained in:
Manfred Karrer 2014-11-19 18:03:26 +01:00
parent b9b50da190
commit 82325f615f
2 changed files with 22 additions and 11 deletions

View File

@ -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()));
}

View File

@ -266,7 +266,7 @@ public class PendingTradesPM extends PresentationModel<PendingTradesModel> {
// TODO error states not implemented yet
break;
default:
log.warn("unhandled state " + state);
log.warn("unhandled state " + model.tradeState.get());
break;
}
}