mirror of
https://github.com/haveno-dex/haveno.git
synced 2025-08-09 07:02:24 -04:00
Improve trade state names
This commit is contained in:
parent
f5b996ef00
commit
afd88bc55f
38 changed files with 235 additions and 177 deletions
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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<TransactionConfidence> future = transactionConfidence.getDepthFuture(1);
|
||||
Futures.addCallback(future, new FutureCallback<TransactionConfidence>() {
|
||||
|
@ -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();
|
||||
|
|
|
@ -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,
|
||||
() -> {
|
||||
|
|
|
@ -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,
|
||||
() -> {
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue