From afd88bc55f93d5e1c8b6126d3ab7c082e9f3c79f Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Thu, 3 Mar 2016 12:57:57 +0100 Subject: [PATCH] Improve trade state names --- .../java/io/bitsquare/trade/SellerTrade.java | 6 +- .../main/java/io/bitsquare/trade/Trade.java | 39 +++++------ .../trade/BuyerAsOffererProtocol.java | 2 +- .../protocol/trade/BuyerAsTakerProtocol.java | 2 +- .../trade/SellerAsOffererProtocol.java | 16 +++-- .../protocol/trade/SellerAsTakerProtocol.java | 18 +++-- .../trade/protocol/trade/SellerProtocol.java | 5 +- .../trade/protocol/trade/TradeProtocol.java | 2 +- .../buyer/ProcessFinalizePayoutTxRequest.java | 2 +- .../buyer/SendFiatTransferStartedMessage.java | 4 +- .../buyer/SendPayoutTxFinalizedMessage.java | 2 +- .../tasks/buyer/SignAndFinalizePayoutTx.java | 2 +- .../buyer/SignAndPublishDepositTxAsBuyer.java | 2 +- .../ProcessDepositTxPublishedMessage.java | 2 +- .../offerer/SendPublishDepositTxRequest.java | 4 +- .../offerer/SetupDepositBalanceListener.java | 4 +- .../ProcessFiatTransferStartedMessage.java | 2 +- .../ProcessPayoutTxFinalizedMessage.java | 2 +- .../seller/SendFinalizePayoutTxRequest.java | 4 +- .../SignAndPublishDepositTxAsSeller.java | 2 +- .../taker/SendDepositTxPublishedMessage.java | 4 +- .../paymentmethods/BlockChainForm.java | 4 +- .../createoffer/CreateOfferDataModel.java | 3 +- .../offer/createoffer/CreateOfferView.java | 34 +++++----- .../createoffer/CreateOfferViewModel.java | 5 +- .../main/offer/offerbook/OfferBookView.java | 13 ++-- .../offer/takeoffer/TakeOfferDataModel.java | 3 +- .../main/offer/takeoffer/TakeOfferView.java | 34 +++++----- .../offer/takeoffer/TakeOfferViewModel.java | 6 +- .../bitsquare/gui/main/overlays/Overlay.java | 4 +- .../overlays/notifications/Notification.java | 2 +- .../notifications/NotificationCenter.java | 8 +-- .../overlays/windows/OfferDetailsWindow.java | 7 +- .../pendingtrades/PendingTradesDataModel.java | 4 +- .../pendingtrades/PendingTradesViewModel.java | 42 ++++++------ .../steps/buyer/BuyerStep2View.java | 65 +++++++++---------- .../steps/seller/SellerStep3View.java | 50 +++++++++++--- .../settings/preferences/PreferencesView.java | 2 +- 38 files changed, 235 insertions(+), 177 deletions(-) diff --git a/core/src/main/java/io/bitsquare/trade/SellerTrade.java b/core/src/main/java/io/bitsquare/trade/SellerTrade.java index 2c77e95034..f00664767f 100644 --- a/core/src/main/java/io/bitsquare/trade/SellerTrade.java +++ b/core/src/main/java/io/bitsquare/trade/SellerTrade.java @@ -18,6 +18,8 @@ package io.bitsquare.trade; import io.bitsquare.app.Version; +import io.bitsquare.common.handlers.ErrorMessageHandler; +import io.bitsquare.common.handlers.ResultHandler; import io.bitsquare.p2p.NodeAddress; import io.bitsquare.storage.Storage; import io.bitsquare.trade.offer.Offer; @@ -48,9 +50,9 @@ public abstract class SellerTrade extends Trade { state = State.PREPARATION; } - public void onFiatPaymentReceived() { + public void onFiatPaymentReceived(ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) { checkArgument(tradeProtocol instanceof SellerProtocol, "tradeProtocol NOT instanceof SellerProtocol"); - ((SellerProtocol) tradeProtocol).onFiatPaymentReceived(); + ((SellerProtocol) tradeProtocol).onFiatPaymentReceived(resultHandler, errorMessageHandler); } diff --git a/core/src/main/java/io/bitsquare/trade/Trade.java b/core/src/main/java/io/bitsquare/trade/Trade.java index a5b10b81ae..10b01dd193 100644 --- a/core/src/main/java/io/bitsquare/trade/Trade.java +++ b/core/src/main/java/io/bitsquare/trade/Trade.java @@ -67,24 +67,24 @@ public abstract class Trade implements Tradable, Model { TAKER_FEE_PAID(Phase.TAKER_FEE_PAID), - DEPOSIT_PUBLISH_REQUESTED(Phase.DEPOSIT_REQUESTED), - DEPOSIT_PUBLISHED(Phase.DEPOSIT_PAID), + OFFERER_SENT_PUBLISH_DEPOSIT_TX_REQUEST(Phase.DEPOSIT_REQUESTED), + TAKER_PUBLISHED_DEPOSIT_TX(Phase.DEPOSIT_PAID), DEPOSIT_SEEN_IN_NETWORK(Phase.DEPOSIT_PAID), // triggered by balance update, used only in error cases - DEPOSIT_PUBLISHED_MSG_SENT(Phase.DEPOSIT_PAID), - DEPOSIT_PUBLISHED_MSG_RECEIVED(Phase.DEPOSIT_PAID), - DEPOSIT_CONFIRMED(Phase.DEPOSIT_PAID), + TAKER_SENT_DEPOSIT_TX_PUBLISHED_MSG(Phase.DEPOSIT_PAID), + OFFERER_RECEIVED_DEPOSIT_TX_PUBLISHED_MSG(Phase.DEPOSIT_PAID), + DEPOSIT_CONFIRMED_IN_BLOCK_CHAIN(Phase.DEPOSIT_PAID), - FIAT_PAYMENT_STARTED(Phase.FIAT_SENT), - FIAT_PAYMENT_STARTED_MSG_SENT(Phase.FIAT_SENT), - FIAT_PAYMENT_STARTED_MSG_RECEIVED(Phase.FIAT_SENT), + BUYER_CONFIRMED_FIAT_PAYMENT_INITIATED(Phase.FIAT_SENT), + BUYER_SENT_FIAT_PAYMENT_INITIATED_MSG(Phase.FIAT_SENT), + SELLER_RECEIVED_FIAT_PAYMENT_INITIATED_MSG(Phase.FIAT_SENT), - FIAT_PAYMENT_RECEIPT(Phase.FIAT_RECEIVED), - FIAT_PAYMENT_RECEIPT_MSG_SENT(Phase.FIAT_RECEIVED), - FIAT_PAYMENT_RECEIPT_MSG_RECEIVED(Phase.FIAT_RECEIVED), + SELLER_CONFIRMED_FIAT_PAYMENT_RECEIPT(Phase.FIAT_RECEIVED), + SELLER_SENT_FIAT_PAYMENT_RECEIPT_MSG(Phase.FIAT_RECEIVED), + BUYER_RECEIVED_FIAT_PAYMENT_RECEIPT_MSG(Phase.FIAT_RECEIVED), - PAYOUT_TX_COMMITTED(Phase.PAYOUT_PAID), - PAYOUT_TX_SENT(Phase.PAYOUT_PAID), - PAYOUT_TX_RECEIVED_AND_COMMITTED(Phase.PAYOUT_PAID), + BUYER_COMMITTED_PAYOUT_TX(Phase.PAYOUT_PAID), //TODO needed? + BUYER_STARTED_SEND_PAYOUT_TX(Phase.PAYOUT_PAID), // not from the success/arrived handler! + SELLER_RECEIVED_AND_COMMITTED_PAYOUT_TX(Phase.PAYOUT_PAID), PAYOUT_BROAD_CASTED(Phase.PAYOUT_PAID), WITHDRAW_COMPLETED(Phase.WITHDRAWN); @@ -569,7 +569,7 @@ public abstract class Trade implements Tradable, Model { TransactionConfidence transactionConfidence = depositTx.getConfidence(); log.debug("transactionConfidence " + transactionConfidence.getDepthInBlocks()); if (transactionConfidence.getDepthInBlocks() > 0) { - handleConfidenceResult(); + setConfirmedState(); } else { ListenableFuture future = transactionConfidence.getDepthFuture(1); Futures.addCallback(future, new FutureCallback() { @@ -577,7 +577,7 @@ public abstract class Trade implements Tradable, Model { public void onSuccess(TransactionConfidence result) { log.debug("transactionConfidence " + transactionConfidence.getDepthInBlocks()); log.debug("state " + state); - handleConfidenceResult(); + setConfirmedState(); } @Override @@ -596,9 +596,10 @@ public abstract class Trade implements Tradable, Model { abstract protected void createProtocol(); - private void handleConfidenceResult() { - if (state.ordinal() < State.DEPOSIT_CONFIRMED.ordinal()) - setState(State.DEPOSIT_CONFIRMED); + private void setConfirmedState() { + // we oly apply the state if we are not already further in the process + if (state.ordinal() < State.DEPOSIT_CONFIRMED_IN_BLOCK_CHAIN.ordinal()) + setState(State.DEPOSIT_CONFIRMED_IN_BLOCK_CHAIN); } abstract protected void initStates(); diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/BuyerAsOffererProtocol.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/BuyerAsOffererProtocol.java index a2b0ce3d91..9497909b3b 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/BuyerAsOffererProtocol.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/BuyerAsOffererProtocol.java @@ -144,7 +144,7 @@ public class BuyerAsOffererProtocol extends TradeProtocol implements BuyerProtoc // User clicked the "bank transfer started" button @Override public void onFiatPaymentStarted(ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) { - buyerAsOffererTrade.setState(Trade.State.FIAT_PAYMENT_STARTED); + buyerAsOffererTrade.setState(Trade.State.BUYER_CONFIRMED_FIAT_PAYMENT_INITIATED); TradeTaskRunner taskRunner = new TradeTaskRunner(buyerAsOffererTrade, () -> { diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/BuyerAsTakerProtocol.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/BuyerAsTakerProtocol.java index 7601848750..b787cb5ff6 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/BuyerAsTakerProtocol.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/BuyerAsTakerProtocol.java @@ -133,7 +133,7 @@ public class BuyerAsTakerProtocol extends TradeProtocol implements BuyerProtocol // User clicked the "bank transfer started" button @Override public void onFiatPaymentStarted(ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) { - buyerAsTakerTrade.setState(Trade.State.FIAT_PAYMENT_STARTED); + buyerAsTakerTrade.setState(Trade.State.BUYER_CONFIRMED_FIAT_PAYMENT_INITIATED); TradeTaskRunner taskRunner = new TradeTaskRunner(buyerAsTakerTrade, () -> { diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/SellerAsOffererProtocol.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/SellerAsOffererProtocol.java index 84e3d098ac..a25503a0db 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/SellerAsOffererProtocol.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/SellerAsOffererProtocol.java @@ -18,6 +18,8 @@ package io.bitsquare.trade.protocol.trade; +import io.bitsquare.common.handlers.ErrorMessageHandler; +import io.bitsquare.common.handlers.ResultHandler; import io.bitsquare.p2p.Message; import io.bitsquare.p2p.NodeAddress; import io.bitsquare.p2p.messaging.MailboxMessage; @@ -159,12 +161,18 @@ public class SellerAsOffererProtocol extends TradeProtocol implements SellerProt // User clicked the "bank transfer received" button, so we release the funds for pay out @Override - public void onFiatPaymentReceived() { - sellerAsOffererTrade.setState(Trade.State.FIAT_PAYMENT_RECEIPT); + public void onFiatPaymentReceived(ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) { + sellerAsOffererTrade.setState(Trade.State.SELLER_CONFIRMED_FIAT_PAYMENT_RECEIPT); TradeTaskRunner taskRunner = new TradeTaskRunner(sellerAsOffererTrade, - () -> handleTaskRunnerSuccess("onFiatPaymentReceived"), - this::handleTaskRunnerFault); + () -> { + resultHandler.handleResult(); + handleTaskRunnerSuccess("onFiatPaymentReceived"); + }, + (errorMessage) -> { + errorMessageHandler.handleErrorMessage(errorMessage); + handleTaskRunnerFault(errorMessage); + }); taskRunner.addTasks( VerifyTakeOfferFeePayment.class, diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/SellerAsTakerProtocol.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/SellerAsTakerProtocol.java index 61943a060f..b5f4cb593e 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/SellerAsTakerProtocol.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/SellerAsTakerProtocol.java @@ -18,6 +18,8 @@ package io.bitsquare.trade.protocol.trade; +import io.bitsquare.common.handlers.ErrorMessageHandler; +import io.bitsquare.common.handlers.ResultHandler; import io.bitsquare.p2p.Message; import io.bitsquare.p2p.NodeAddress; import io.bitsquare.p2p.messaging.MailboxMessage; @@ -157,13 +159,19 @@ public class SellerAsTakerProtocol extends TradeProtocol implements SellerProtoc // User clicked the "bank transfer received" button, so we release the funds for pay out @Override - public void onFiatPaymentReceived() { - sellerAsTakerTrade.setState(Trade.State.FIAT_PAYMENT_RECEIPT); + public void onFiatPaymentReceived(ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) { + sellerAsTakerTrade.setState(Trade.State.SELLER_CONFIRMED_FIAT_PAYMENT_RECEIPT); TradeTaskRunner taskRunner = new TradeTaskRunner(sellerAsTakerTrade, - () -> handleTaskRunnerSuccess("onFiatPaymentReceived"), - this::handleTaskRunnerFault); - + () -> { + resultHandler.handleResult(); + handleTaskRunnerSuccess("onFiatPaymentReceived"); + }, + (errorMessage) -> { + errorMessageHandler.handleErrorMessage(errorMessage); + handleTaskRunnerFault(errorMessage); + }); + taskRunner.addTasks( VerifyOfferFeePayment.class, SignPayoutTx.class, diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/SellerProtocol.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/SellerProtocol.java index 5356de4490..179147c27f 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/SellerProtocol.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/SellerProtocol.java @@ -17,6 +17,9 @@ package io.bitsquare.trade.protocol.trade; +import io.bitsquare.common.handlers.ErrorMessageHandler; +import io.bitsquare.common.handlers.ResultHandler; + public interface SellerProtocol { - void onFiatPaymentReceived(); + void onFiatPaymentReceived(ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler); } diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/TradeProtocol.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/TradeProtocol.java index 6891c8d582..e01fcccc0d 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/TradeProtocol.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/TradeProtocol.java @@ -136,7 +136,7 @@ public abstract class TradeProtocol { Trade.State tradeState = trade.getState(); log.debug("cleanupTradable tradeState=" + tradeState); boolean isOffererTrade = trade instanceof OffererTrade; - if (isOffererTrade && (tradeState == Trade.State.DEPOSIT_PUBLISH_REQUESTED || tradeState == Trade.State.DEPOSIT_SEEN_IN_NETWORK)) + if (isOffererTrade && (tradeState == Trade.State.OFFERER_SENT_PUBLISH_DEPOSIT_TX_REQUEST || tradeState == Trade.State.DEPOSIT_SEEN_IN_NETWORK)) processModel.getOpenOfferManager().closeOpenOffer(trade.getOffer()); boolean isTakerTrade = trade instanceof TakerTrade; diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/buyer/ProcessFinalizePayoutTxRequest.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/buyer/ProcessFinalizePayoutTxRequest.java index 8e46d42500..5707d6ef70 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/buyer/ProcessFinalizePayoutTxRequest.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/buyer/ProcessFinalizePayoutTxRequest.java @@ -52,7 +52,7 @@ public class ProcessFinalizePayoutTxRequest extends TradeTask { removeMailboxMessageAfterProcessing(); - trade.setState(Trade.State.FIAT_PAYMENT_RECEIPT_MSG_RECEIVED); + trade.setState(Trade.State.BUYER_RECEIVED_FIAT_PAYMENT_RECEIPT_MSG); complete(); } catch (Throwable t) { diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/buyer/SendFiatTransferStartedMessage.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/buyer/SendFiatTransferStartedMessage.java index dc0c487200..32e7a2b89d 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/buyer/SendFiatTransferStartedMessage.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/buyer/SendFiatTransferStartedMessage.java @@ -48,14 +48,14 @@ public class SendFiatTransferStartedMessage extends TradeTask { @Override public void onArrived() { log.info("Message arrived at peer."); - trade.setState(Trade.State.FIAT_PAYMENT_STARTED_MSG_SENT); + trade.setState(Trade.State.BUYER_SENT_FIAT_PAYMENT_INITIATED_MSG); complete(); } @Override public void onStoredInMailbox() { log.info("Message stored in mailbox."); - trade.setState(Trade.State.FIAT_PAYMENT_STARTED_MSG_SENT); + trade.setState(Trade.State.BUYER_SENT_FIAT_PAYMENT_INITIATED_MSG); complete(); } diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/buyer/SendPayoutTxFinalizedMessage.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/buyer/SendPayoutTxFinalizedMessage.java index f3b1eb37d8..185e42c11d 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/buyer/SendPayoutTxFinalizedMessage.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/buyer/SendPayoutTxFinalizedMessage.java @@ -67,7 +67,7 @@ public class SendPayoutTxFinalizedMessage extends TradeTask { ); // state must not be set in onArrived or onStoredInMailbox handlers as we would get that // called delayed and would overwrite the broad cast state set by the next task - trade.setState(Trade.State.PAYOUT_TX_SENT); + trade.setState(Trade.State.BUYER_STARTED_SEND_PAYOUT_TX); } else { log.error("trade.getPayoutTx() = " + trade.getPayoutTx()); failed("PayoutTx is null"); diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/buyer/SignAndFinalizePayoutTx.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/buyer/SignAndFinalizePayoutTx.java index 59fccf9c4f..42c32787e6 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/buyer/SignAndFinalizePayoutTx.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/buyer/SignAndFinalizePayoutTx.java @@ -57,7 +57,7 @@ public class SignAndFinalizePayoutTx extends TradeTask { ); trade.setPayoutTx(transaction); - trade.setState(Trade.State.PAYOUT_TX_COMMITTED); + trade.setState(Trade.State.BUYER_COMMITTED_PAYOUT_TX); complete(); } catch (Throwable t) { diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/buyer/SignAndPublishDepositTxAsBuyer.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/buyer/SignAndPublishDepositTxAsBuyer.java index feb45aa775..7afc5ffd5c 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/buyer/SignAndPublishDepositTxAsBuyer.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/buyer/SignAndPublishDepositTxAsBuyer.java @@ -64,7 +64,7 @@ public class SignAndPublishDepositTxAsBuyer extends TradeTask { trade.setDepositTx(transaction); //trade.setTakeOfferDate(new Date()); trade.setTakeOfferDateAsBlockHeight(processModel.getTradeWalletService().getBestChainHeight()); - trade.setState(Trade.State.DEPOSIT_PUBLISHED); + trade.setState(Trade.State.TAKER_PUBLISHED_DEPOSIT_TX); complete(); } diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/offerer/ProcessDepositTxPublishedMessage.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/offerer/ProcessDepositTxPublishedMessage.java index 047e168672..0acf9f0436 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/offerer/ProcessDepositTxPublishedMessage.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/offerer/ProcessDepositTxPublishedMessage.java @@ -63,7 +63,7 @@ public class ProcessDepositTxPublishedMessage extends TradeTask { removeMailboxMessageAfterProcessing(); - trade.setState(Trade.State.DEPOSIT_PUBLISHED_MSG_RECEIVED); + trade.setState(Trade.State.OFFERER_RECEIVED_DEPOSIT_TX_PUBLISHED_MSG); complete(); } catch (Throwable t) { diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/offerer/SendPublishDepositTxRequest.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/offerer/SendPublishDepositTxRequest.java index 187d798a4c..3dd0b4668c 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/offerer/SendPublishDepositTxRequest.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/offerer/SendPublishDepositTxRequest.java @@ -58,6 +58,7 @@ public class SendPublishDepositTxRequest extends TradeTask { @Override public void onArrived() { log.trace("Message arrived at peer."); + trade.setState(Trade.State.OFFERER_SENT_PUBLISH_DEPOSIT_TX_REQUEST); complete(); } @@ -68,9 +69,6 @@ public class SendPublishDepositTxRequest extends TradeTask { } } ); - - //TODO should it be in success handler? - trade.setState(Trade.State.DEPOSIT_PUBLISH_REQUESTED); } catch (Throwable t) { failed(t); } diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/offerer/SetupDepositBalanceListener.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/offerer/SetupDepositBalanceListener.java index 040384120e..0b7b020d2a 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/offerer/SetupDepositBalanceListener.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/offerer/SetupDepositBalanceListener.java @@ -62,7 +62,7 @@ public class SetupDepositBalanceListener extends TradeTask { tradeStateSubscription = EasyBind.subscribe(trade.stateProperty(), newValue -> { log.debug("tradeStateSubscription newValue " + newValue); - if (newValue == Trade.State.DEPOSIT_PUBLISHED_MSG_RECEIVED + if (newValue == Trade.State.OFFERER_RECEIVED_DEPOSIT_TX_PUBLISHED_MSG || newValue == Trade.State.DEPOSIT_SEEN_IN_NETWORK) { walletService.removeBalanceListener(balanceListener); @@ -91,7 +91,7 @@ public class SetupDepositBalanceListener extends TradeTask { if (trade instanceof OffererTrade) { processModel.getOpenOfferManager().closeOpenOffer(trade.getOffer()); - if (tradeState == Trade.State.DEPOSIT_PUBLISH_REQUESTED) { + if (tradeState == Trade.State.OFFERER_SENT_PUBLISH_DEPOSIT_TX_REQUEST) { trade.setState(Trade.State.DEPOSIT_SEEN_IN_NETWORK); } else if (tradeState.getPhase() == Trade.Phase.PREPARATION) { processModel.getTradeManager().removePreparedTrade(trade); diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/seller/ProcessFiatTransferStartedMessage.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/seller/ProcessFiatTransferStartedMessage.java index cd4aa8f47c..f333854c7c 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/seller/ProcessFiatTransferStartedMessage.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/seller/ProcessFiatTransferStartedMessage.java @@ -51,7 +51,7 @@ public class ProcessFiatTransferStartedMessage extends TradeTask { removeMailboxMessageAfterProcessing(); - trade.setState(Trade.State.FIAT_PAYMENT_STARTED_MSG_RECEIVED); + trade.setState(Trade.State.SELLER_RECEIVED_FIAT_PAYMENT_INITIATED_MSG); complete(); } catch (Throwable t) { diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/seller/ProcessPayoutTxFinalizedMessage.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/seller/ProcessPayoutTxFinalizedMessage.java index c314330148..acf3b76649 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/seller/ProcessPayoutTxFinalizedMessage.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/seller/ProcessPayoutTxFinalizedMessage.java @@ -52,7 +52,7 @@ public class ProcessPayoutTxFinalizedMessage extends TradeTask { removeMailboxMessageAfterProcessing(); - trade.setState(Trade.State.PAYOUT_TX_RECEIVED_AND_COMMITTED); + trade.setState(Trade.State.SELLER_RECEIVED_AND_COMMITTED_PAYOUT_TX); complete(); } catch (Throwable t) { diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/seller/SendFinalizePayoutTxRequest.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/seller/SendFinalizePayoutTxRequest.java index 43616afc22..6062b542a0 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/seller/SendFinalizePayoutTxRequest.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/seller/SendFinalizePayoutTxRequest.java @@ -53,14 +53,14 @@ public class SendFinalizePayoutTxRequest extends TradeTask { @Override public void onArrived() { log.trace("Message arrived at peer."); - trade.setState(Trade.State.FIAT_PAYMENT_RECEIPT_MSG_SENT); + trade.setState(Trade.State.SELLER_SENT_FIAT_PAYMENT_RECEIPT_MSG); complete(); } @Override public void onStoredInMailbox() { log.trace("Message stored in mailbox."); - trade.setState(Trade.State.FIAT_PAYMENT_RECEIPT_MSG_SENT); + trade.setState(Trade.State.SELLER_SENT_FIAT_PAYMENT_RECEIPT_MSG); complete(); } diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/seller/SignAndPublishDepositTxAsSeller.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/seller/SignAndPublishDepositTxAsSeller.java index 62e09d1795..2cdf58b956 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/seller/SignAndPublishDepositTxAsSeller.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/seller/SignAndPublishDepositTxAsSeller.java @@ -62,7 +62,7 @@ public class SignAndPublishDepositTxAsSeller extends TradeTask { trade.setDepositTx(transaction); //trade.setTakeOfferDate(new Date()); trade.setTakeOfferDateAsBlockHeight(processModel.getTradeWalletService().getBestChainHeight()); - trade.setState(Trade.State.DEPOSIT_PUBLISHED); + trade.setState(Trade.State.TAKER_PUBLISHED_DEPOSIT_TX); complete(); } diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/taker/SendDepositTxPublishedMessage.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/taker/SendDepositTxPublishedMessage.java index f5974a0f8f..bd28a8ffad 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/taker/SendDepositTxPublishedMessage.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/tasks/taker/SendDepositTxPublishedMessage.java @@ -49,14 +49,14 @@ public class SendDepositTxPublishedMessage extends TradeTask { @Override public void onArrived() { log.trace("Message arrived at peer."); - trade.setState(Trade.State.DEPOSIT_PUBLISHED_MSG_SENT); + trade.setState(Trade.State.TAKER_SENT_DEPOSIT_TX_PUBLISHED_MSG); complete(); } @Override public void onStoredInMailbox() { log.trace("Message stored in mailbox."); - trade.setState(Trade.State.DEPOSIT_PUBLISHED_MSG_SENT); + trade.setState(Trade.State.TAKER_SENT_DEPOSIT_TX_PUBLISHED_MSG); complete(); } diff --git a/gui/src/main/java/io/bitsquare/gui/components/paymentmethods/BlockChainForm.java b/gui/src/main/java/io/bitsquare/gui/components/paymentmethods/BlockChainForm.java index 26a70e7a29..7096840da4 100644 --- a/gui/src/main/java/io/bitsquare/gui/components/paymentmethods/BlockChainForm.java +++ b/gui/src/main/java/io/bitsquare/gui/components/paymentmethods/BlockChainForm.java @@ -99,7 +99,7 @@ public class BlockChainForm extends PaymentMethodForm { addLabelTextField(gridPane, ++gridRow, "Payment method:", BSResources.get(blockChainAccount.getPaymentMethod().getId())); TextField field = addLabelTextField(gridPane, ++gridRow, "Cryptocurrency address:", blockChainAccount.getAddress()).second; field.setMouseTransparent(false); - addLabelTextField(gridPane, ++gridRow, "Crypto currency:", blockChainAccount.getSingleTradeCurrency().getNameAndCode()); + addLabelTextField(gridPane, ++gridRow, "Cryptocurrency:", blockChainAccount.getSingleTradeCurrency().getNameAndCode()); addAllowedPeriod(); } @@ -112,7 +112,7 @@ public class BlockChainForm extends PaymentMethodForm { @Override protected void addTradeCurrencyComboBox() { - currencyComboBox = addLabelComboBox(gridPane, ++gridRow, "Crypto currency:", Layout.FIRST_ROW_AND_GROUP_DISTANCE).second; + currencyComboBox = addLabelComboBox(gridPane, ++gridRow, "Cryptocurrency:", Layout.FIRST_ROW_AND_GROUP_DISTANCE).second; currencyComboBox.setPromptText("Select cryptocurrency"); currencyComboBox.setItems(FXCollections.observableArrayList(CurrencyUtil.getAllSortedCryptoCurrencies())); currencyComboBox.setVisibleRowCount(Math.min(currencyComboBox.getItems().size(), 20)); diff --git a/gui/src/main/java/io/bitsquare/gui/main/offer/createoffer/CreateOfferDataModel.java b/gui/src/main/java/io/bitsquare/gui/main/offer/createoffer/CreateOfferDataModel.java index 56db1b9952..63ca9ccf04 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/offer/createoffer/CreateOfferDataModel.java +++ b/gui/src/main/java/io/bitsquare/gui/main/offer/createoffer/CreateOfferDataModel.java @@ -162,7 +162,8 @@ class CreateOfferDataModel extends ActivatableDataModel { } }); } else { - feeFromFundingTxProperty.set(FeePolicy.getMinRequiredFeeForFundingTx()); + // Simulate a bit of delay + UserThread.runAfter(() -> feeFromFundingTxProperty.set(FeePolicy.getMinRequiredFeeForFundingTx()), 1); } } }; diff --git a/gui/src/main/java/io/bitsquare/gui/main/offer/createoffer/CreateOfferView.java b/gui/src/main/java/io/bitsquare/gui/main/offer/createoffer/CreateOfferView.java index 700f51070f..bb425025dd 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/offer/createoffer/CreateOfferView.java +++ b/gui/src/main/java/io/bitsquare/gui/main/offer/createoffer/CreateOfferView.java @@ -187,15 +187,12 @@ public class CreateOfferView extends ActivatableViewAndModel { - spinner.setProgress(newValue ? -1 : 0); - spinner.setVisible(newValue); - }; + isSpinnerVisibleListener = (ov, oldValue, newValue) -> spinner.setProgress(newValue ? -1 : 0); feeFromFundingTxListener = (observable, oldValue, newValue) -> { log.debug("feeFromFundingTxListener " + newValue); @@ -517,18 +515,25 @@ public class CreateOfferView extends ActivatableViewAndModel + UserThread.runAfter(() -> { + String key = "createOfferSuccessInfo"; + if (preferences.showAgain(key)) { new Popup().headLine(BSResources.get("createOffer.success.headline")) .feedback(BSResources.get("createOffer.success.info")) + .dontShowAgainId(key, preferences) .actionButtonText("Go to \"My open offers\"") .onAction(() -> { - close(); UserThread.runAfter(() -> navigation.navigateTo(MainView.class, PortfolioView.class, OpenOffersView.class), 100, TimeUnit.MILLISECONDS); + close(); }) .onClose(this::close) - .show(), + .show(); + } else { + close(); + } + }, 500, TimeUnit.MILLISECONDS); } }; @@ -725,11 +730,8 @@ public class CreateOfferView extends ActivatableViewAndModel close()); diff --git a/gui/src/main/java/io/bitsquare/gui/main/offer/createoffer/CreateOfferViewModel.java b/gui/src/main/java/io/bitsquare/gui/main/offer/createoffer/CreateOfferViewModel.java index ddbe119acf..fef83d2423 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/offer/createoffer/CreateOfferViewModel.java +++ b/gui/src/main/java/io/bitsquare/gui/main/offer/createoffer/CreateOfferViewModel.java @@ -70,7 +70,7 @@ class CreateOfferViewModel extends ActivatableWithDataModel feeFromFundingTxProperty.set(FeePolicy.getMinRequiredFeeForFundingTx()), 1); } } }; diff --git a/gui/src/main/java/io/bitsquare/gui/main/offer/takeoffer/TakeOfferView.java b/gui/src/main/java/io/bitsquare/gui/main/offer/takeoffer/TakeOfferView.java index 454a45f375..f2af9526aa 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/offer/takeoffer/TakeOfferView.java +++ b/gui/src/main/java/io/bitsquare/gui/main/offer/takeoffer/TakeOfferView.java @@ -205,17 +205,25 @@ public class TakeOfferView extends ActivatableViewAndModel new Popup().headLine(BSResources.get("takeOffer.success.headline")) - .feedback(BSResources.get("takeOffer.success.info")) - .actionButtonText("Go to \"Open trades\"") - .onAction(() -> { - close(); - UserThread.runAfter( - () -> navigation.navigateTo(MainView.class, PortfolioView.class, PendingTradesView.class) - , 100, TimeUnit.MILLISECONDS); - }) - .onClose(this::close) - .show(), 500, TimeUnit.MILLISECONDS); + () -> { + String key = "takeOfferSuccessInfo"; + if (preferences.showAgain(key)) { + new Popup().headLine(BSResources.get("takeOffer.success.headline")) + .feedback(BSResources.get("takeOffer.success.info")) + .actionButtonText("Go to \"Open trades\"") + .dontShowAgainId(key, preferences) + .onAction(() -> { + UserThread.runAfter( + () -> navigation.navigateTo(MainView.class, PortfolioView.class, PendingTradesView.class) + , 100, TimeUnit.MILLISECONDS); + close(); + }) + .onClose(this::close) + .show(); + } else { + close(); + } + }, 500, TimeUnit.MILLISECONDS); } }); @@ -294,8 +302,6 @@ public class TakeOfferView extends ActivatableViewAndModel im private void applyTradeState(Trade.State tradeState) { log.debug("applyTradeState state = " + tradeState); - if (trade.getState() == Trade.State.DEPOSIT_PUBLISHED + if (trade.getState() == Trade.State.TAKER_PUBLISHED_DEPOSIT_TX || trade.getState() == Trade.State.DEPOSIT_SEEN_IN_NETWORK - || trade.getState() == Trade.State.DEPOSIT_PUBLISHED_MSG_SENT - || trade.getState() == Trade.State.DEPOSIT_PUBLISHED_MSG_RECEIVED) { + || trade.getState() == Trade.State.TAKER_SENT_DEPOSIT_TX_PUBLISHED_MSG + || trade.getState() == Trade.State.OFFERER_RECEIVED_DEPOSIT_TX_PUBLISHED_MSG) { if (trade.getDepositTx() != null) { if (takeOfferSucceededHandler != null) takeOfferSucceededHandler.run(); diff --git a/gui/src/main/java/io/bitsquare/gui/main/overlays/Overlay.java b/gui/src/main/java/io/bitsquare/gui/main/overlays/Overlay.java index 83b2fb2797..692e87fea0 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/overlays/Overlay.java +++ b/gui/src/main/java/io/bitsquare/gui/main/overlays/Overlay.java @@ -307,10 +307,9 @@ public abstract class Overlay { scene.getStylesheets().setAll(rootScene.getStylesheets()); scene.setFill(Color.TRANSPARENT); stage.setScene(scene); + Window window = rootScene.getWindow(); setModality(); stage.initStyle(StageStyle.TRANSPARENT); - Window window = rootScene.getWindow(); - stage.initOwner(window); stage.show(); layout(); @@ -342,6 +341,7 @@ public abstract class Overlay { } protected void setModality() { + stage.initOwner(owner.getScene().getWindow()); stage.initModality(Modality.WINDOW_MODAL); } diff --git a/gui/src/main/java/io/bitsquare/gui/main/overlays/notifications/Notification.java b/gui/src/main/java/io/bitsquare/gui/main/overlays/notifications/Notification.java index d54a6c15c8..564ff8d71a 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/overlays/notifications/Notification.java +++ b/gui/src/main/java/io/bitsquare/gui/main/overlays/notifications/Notification.java @@ -32,7 +32,7 @@ public class Notification extends Overlay { public void onReadyForDisplay() { super.display(); if (autoClose && autoCloseTimer == null) - autoCloseTimer = UserThread.runAfter(this::hide, 5); + autoCloseTimer = UserThread.runAfter(this::hide, 4); } @Override diff --git a/gui/src/main/java/io/bitsquare/gui/main/overlays/notifications/NotificationCenter.java b/gui/src/main/java/io/bitsquare/gui/main/overlays/notifications/NotificationCenter.java index 71a3749ace..a5f5a378af 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/overlays/notifications/NotificationCenter.java +++ b/gui/src/main/java/io/bitsquare/gui/main/overlays/notifications/NotificationCenter.java @@ -147,10 +147,10 @@ public class NotificationCenter { String message = null; if (tradeManager.isBuyer(trade.getOffer())) { switch (tradeState) { - case DEPOSIT_PUBLISHED_MSG_RECEIVED: + case OFFERER_RECEIVED_DEPOSIT_TX_PUBLISHED_MSG: message = "Your offer has been accepted by a seller."; break; - case DEPOSIT_CONFIRMED: + case DEPOSIT_CONFIRMED_IN_BLOCK_CHAIN: message = "Your trade has at least one blockchain confirmation.\n" + "You can start the payment now."; @@ -164,10 +164,10 @@ public class NotificationCenter { } } else { switch (tradeState) { - case DEPOSIT_PUBLISHED_MSG_RECEIVED: + case OFFERER_RECEIVED_DEPOSIT_TX_PUBLISHED_MSG: message = "Your offer has been accepted by a buyer."; break; - case FIAT_PAYMENT_STARTED_MSG_RECEIVED: + case SELLER_RECEIVED_FIAT_PAYMENT_INITIATED_MSG: message = "The bitcoin buyer has started the payment."; break; /* case FIAT_PAYMENT_RECEIPT_MSG_SENT: diff --git a/gui/src/main/java/io/bitsquare/gui/main/overlays/windows/OfferDetailsWindow.java b/gui/src/main/java/io/bitsquare/gui/main/overlays/windows/OfferDetailsWindow.java index 68190d1b20..6740aa4864 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/overlays/windows/OfferDetailsWindow.java +++ b/gui/src/main/java/io/bitsquare/gui/main/overlays/windows/OfferDetailsWindow.java @@ -242,12 +242,15 @@ public class OfferDetailsWindow extends Overlay { Tuple3 placeOfferTuple = addButtonWithStatusAfterGroup(gridPane, ++rowIndex, isPlaceOffer ? placeOfferButtonText : takeOfferButtonText); Button button = placeOfferTuple.first; + button.setMinHeight(40); + button.setPadding(new Insets(0, 20, 0, 20)); button.setGraphic(iconView); - button.setId(isBuyerRole ? "buy-button" : "sell-button"); + button.setGraphicTextGap(10); + button.setId(isBuyerRole ? "buy-button-big" : "sell-button-big"); button.setText(isPlaceOffer ? placeOfferButtonText : takeOfferButtonText); spinner = placeOfferTuple.second; - spinner.setPrefSize(18, 18); + //spinner.setPrefSize(18, 18); spinner.setVisible(false); Label spinnerInfoLabel = placeOfferTuple.third; diff --git a/gui/src/main/java/io/bitsquare/gui/main/portfolio/pendingtrades/PendingTradesDataModel.java b/gui/src/main/java/io/bitsquare/gui/main/portfolio/pendingtrades/PendingTradesDataModel.java index 4a7112a5e6..4f86acfc05 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/portfolio/pendingtrades/PendingTradesDataModel.java +++ b/gui/src/main/java/io/bitsquare/gui/main/portfolio/pendingtrades/PendingTradesDataModel.java @@ -140,11 +140,11 @@ public class PendingTradesDataModel extends ActivatableDataModel { ((BuyerTrade) getTrade()).onFiatPaymentStarted(resultHandler, errorMessageHandler); } - public void onFiatPaymentReceived() { + public void onFiatPaymentReceived(ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) { checkNotNull(getTrade(), "trade must not be null"); checkArgument(getTrade() instanceof SellerTrade, "Check failed: trade instanceof SellerTrade"); if (getTrade().getDisputeState() == Trade.DisputeState.NONE) - ((SellerTrade) getTrade()).onFiatPaymentReceived(); + ((SellerTrade) getTrade()).onFiatPaymentReceived(resultHandler, errorMessageHandler); } public void onWithdrawRequest(String toAddress, ResultHandler resultHandler, FaultHandler faultHandler) { diff --git a/gui/src/main/java/io/bitsquare/gui/main/portfolio/pendingtrades/PendingTradesViewModel.java b/gui/src/main/java/io/bitsquare/gui/main/portfolio/pendingtrades/PendingTradesViewModel.java index 1f59b12299..45b4e87ad9 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/portfolio/pendingtrades/PendingTradesViewModel.java +++ b/gui/src/main/java/io/bitsquare/gui/main/portfolio/pendingtrades/PendingTradesViewModel.java @@ -263,6 +263,9 @@ public class PendingTradesViewModel extends ActivatableWithDataModel { - if (state.equals(Trade.State.DEPOSIT_CONFIRMED)) { + if (state == Trade.State.DEPOSIT_CONFIRMED_IN_BLOCK_CHAIN) { PaymentAccountContractData paymentAccountContractData = model.dataModel.getSellersPaymentAccountContractData(); String key = "StartPaymentPopup_" + trade.getId(); if (attentionRequiredPopup == null && !BitsquareApp.DEV_MODE) { @@ -96,6 +96,11 @@ public class BuyerStep2View extends TradeStepView { attentionRequiredPopup.show(); } + } else if (state == Trade.State.BUYER_CONFIRMED_FIAT_PAYMENT_INITIATED) { + showStatusInfo(); + statusLabel.setText("Sending confirmation..."); + } else if (state == Trade.State.BUYER_SENT_FIAT_PAYMENT_INITIATED_MSG) { + hideStatusInfo(); } }); } @@ -105,7 +110,7 @@ public class BuyerStep2View extends TradeStepView { public void deactivate() { super.deactivate(); - removeStatusProgressIndicator(); + hideStatusInfo(); if (tradeStatePropertySubscription != null) { tradeStatePropertySubscription.unsubscribe(); tradeStatePropertySubscription = null; @@ -169,10 +174,12 @@ public class BuyerStep2View extends TradeStepView { GridPane.setRowSpan(accountTitledGroupBg, gridRow - 3); Tuple3 tuple3 = addButtonWithStatusAfterGroup(gridPane, ++gridRow, "Payment started"); - paymentStartedButton = tuple3.first; - paymentStartedButton.setOnAction(e -> onPaymentStarted()); + confirmButton = tuple3.first; + confirmButton.setOnAction(e -> onPaymentStarted()); statusProgressIndicator = tuple3.second; statusLabel = tuple3.third; + + hideStatusInfo(); } @@ -203,7 +210,7 @@ public class BuyerStep2View extends TradeStepView { @Override protected void applyOnDisputeOpened() { - paymentStartedButton.setDisable(true); + confirmButton.setDisable(true); } @@ -235,41 +242,31 @@ public class BuyerStep2View extends TradeStepView { } private void confirmPaymentStarted() { - paymentStartedButton.setDisable(true); - paymentStartedButton.setMinWidth(130); - - statusProgressIndicator.setVisible(true); - statusProgressIndicator.setManaged(true); - statusProgressIndicator.setProgress(-1); - - statusLabel.setWrapText(true); - statusLabel.setPrefWidth(160); - statusLabel.setText("Sending message to your trading partner.\n" + - "Please wait until you get the confirmation that the message has arrived."); - + confirmButton.setDisable(true); model.dataModel.onPaymentStarted(() -> { - // We would not really need an update as the success triggers a screen change - removeStatusProgressIndicator(); - statusLabel.setText(""); - // In case the first send failed we got the support button displayed. // If it succeeds at a second try we remove the support button again. - //TODO check for support. in case of a dispute we dont want to hid ethe button - /*if (notificationGroup != null) { - notificationGroup.setButtonVisible(false); - }*/ + //TODO check for support. in case of a dispute we dont want to hide the button + //if (notificationGroup != null) + // notificationGroup.setButtonVisible(false); }, errorMessage -> { - removeStatusProgressIndicator(); - statusLabel.setText("Sending message to your trading partner failed.\n" + - "Please try again and if it continue to fail report a bug."); - paymentStartedButton.setDisable(false); + confirmButton.setDisable(false); + hideStatusInfo(); + new Popup().warning("Sending message to your trading partner failed.\n" + + "Please try again and if it continue to fail report a bug.").show(); }); } - private void removeStatusProgressIndicator() { - statusProgressIndicator.setVisible(false); - statusProgressIndicator.setProgress(0); - statusProgressIndicator.setManaged(false); + private void showStatusInfo() { + statusProgressIndicator.setVisible(true); + statusProgressIndicator.setManaged(true); + statusProgressIndicator.setProgress(-1); } + private void hideStatusInfo() { + statusProgressIndicator.setVisible(false); + statusProgressIndicator.setManaged(false); + statusProgressIndicator.setProgress(0); + statusLabel.setText(""); + } } diff --git a/gui/src/main/java/io/bitsquare/gui/main/portfolio/pendingtrades/steps/seller/SellerStep3View.java b/gui/src/main/java/io/bitsquare/gui/main/portfolio/pendingtrades/steps/seller/SellerStep3View.java index c7fd716baa..00869d4d56 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/portfolio/pendingtrades/steps/seller/SellerStep3View.java +++ b/gui/src/main/java/io/bitsquare/gui/main/portfolio/pendingtrades/steps/seller/SellerStep3View.java @@ -45,7 +45,7 @@ import static io.bitsquare.gui.util.FormBuilder.*; public class SellerStep3View extends TradeStepView { - private Button confirmFiatReceivedButton; + private Button confirmButton; private Label statusLabel; private ProgressIndicator statusProgressIndicator; private Subscription tradeStatePropertySubscription; @@ -65,7 +65,7 @@ public class SellerStep3View extends TradeStepView { super.activate(); tradeStatePropertySubscription = EasyBind.subscribe(trade.stateProperty(), state -> { - if (state.equals(Trade.State.FIAT_PAYMENT_STARTED_MSG_RECEIVED)) { + if (state == Trade.State.SELLER_RECEIVED_FIAT_PAYMENT_INITIATED_MSG) { PaymentAccountContractData paymentAccountContractData = model.dataModel.getSellersPaymentAccountContractData(); String key = "ConfirmPaymentPopup_" + trade.getId(); if (attentionRequiredPopup == null && !BitsquareApp.DEV_MODE) { @@ -95,6 +95,11 @@ public class SellerStep3View extends TradeStepView { attentionRequiredPopup.show(); } + } else if (state == Trade.State.SELLER_CONFIRMED_FIAT_PAYMENT_RECEIPT) { + showStatusInfo(); + statusLabel.setText("Sending confirmation..."); + } else if (state == Trade.State.SELLER_SENT_FIAT_PAYMENT_RECEIPT_MSG) { + hideStatusInfo(); } }); } @@ -103,9 +108,12 @@ public class SellerStep3View extends TradeStepView { public void deactivate() { super.deactivate(); - if (tradeStatePropertySubscription != null) + if (tradeStatePropertySubscription != null) { tradeStatePropertySubscription.unsubscribe(); - statusProgressIndicator.setProgress(0); + tradeStatePropertySubscription = null; + } + + hideStatusInfo(); } @@ -151,10 +159,12 @@ public class SellerStep3View extends TradeStepView { } Tuple3 tuple = addButtonWithStatusAfterGroup(gridPane, ++gridRow, "Confirm payment receipt"); - confirmFiatReceivedButton = tuple.first; - confirmFiatReceivedButton.setOnAction(e -> onPaymentReceived()); + confirmButton = tuple.first; + confirmButton.setOnAction(e -> onPaymentReceived()); statusProgressIndicator = tuple.second; statusLabel = tuple.third; + + hideStatusInfo(); } @@ -208,7 +218,7 @@ public class SellerStep3View extends TradeStepView { @Override protected void applyOnDisputeOpened() { - confirmFiatReceivedButton.setDisable(true); + confirmButton.setDisable(true); } @@ -243,13 +253,33 @@ public class SellerStep3View extends TradeStepView { } private void confirmPaymentReceived() { - confirmFiatReceivedButton.setDisable(true); + confirmButton.setDisable(true); + model.dataModel.onFiatPaymentReceived(() -> { + // In case the first send failed we got the support button displayed. + // If it succeeds at a second try we remove the support button again. + //TODO check for support. in case of a dispute we dont want to hide the button + //if (notificationGroup != null) + // notificationGroup.setButtonVisible(false); + }, errorMessage -> { + confirmButton.setDisable(false); + hideStatusInfo(); + new Popup().warning("Sending message to your trading partner failed.\n" + + "Please try again and if it continue to fail report a bug.").show(); + }); + } + + private void showStatusInfo() { statusProgressIndicator.setVisible(true); + statusProgressIndicator.setManaged(true); statusProgressIndicator.setProgress(-1); - statusLabel.setText("Sending message to trading partner..."); + } - model.dataModel.onFiatPaymentReceived(); + private void hideStatusInfo() { + statusProgressIndicator.setVisible(false); + statusProgressIndicator.setManaged(false); + statusProgressIndicator.setProgress(0); + statusLabel.setText(""); } } diff --git a/gui/src/main/java/io/bitsquare/gui/main/settings/preferences/PreferencesView.java b/gui/src/main/java/io/bitsquare/gui/main/settings/preferences/PreferencesView.java index da6cea3ca3..1bdc20b74e 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/settings/preferences/PreferencesView.java +++ b/gui/src/main/java/io/bitsquare/gui/main/settings/preferences/PreferencesView.java @@ -260,7 +260,7 @@ public class PreferencesView extends ActivatableViewAndModel labelComboBoxTuple2 = addLabelComboBox(root, gridRow); cryptoCurrenciesComboBox = labelComboBoxTuple2.second; GridPane.setColumnIndex(cryptoCurrenciesComboBox, 3); - cryptoCurrenciesComboBox.setPromptText("Add crypto currency"); + cryptoCurrenciesComboBox.setPromptText("Add cryptocurrency"); cryptoCurrenciesComboBox.setConverter(new StringConverter() { @Override public String toString(CryptoCurrency tradeCurrency) {