mirror of
https://github.com/haveno-dex/haveno.git
synced 2025-03-29 18:48:57 +00:00
rename payment sent message state property for seller
This commit is contained in:
parent
03a1132c2f
commit
6cac782ff3
9 changed files with 41 additions and 33 deletions
core/src/main/java/haveno/core/trade
Trade.java
protocol
desktop/src/main/java/haveno/desktop/main/portfolio/pendingtrades
proto/src/main/proto
|
@ -735,9 +735,9 @@ public abstract class Trade extends XmrWalletBase implements Tradable, Model {
|
|||
// TODO: buyer's payment sent message state property became unsynced if shut down while awaiting ack from seller. fixed in v1.0.19 so this check can be removed?
|
||||
if (isBuyer()) {
|
||||
MessageState expectedState = getPaymentSentMessageState();
|
||||
if (expectedState != null && expectedState != processModel.getPaymentSentMessageStateProperty().get()) {
|
||||
log.warn("Updating unexpected payment sent message state for {} {}, expected={}, actual={}", getClass().getSimpleName(), getId(), expectedState, processModel.getPaymentSentMessageStateProperty().get());
|
||||
processModel.getPaymentSentMessageStateProperty().set(expectedState);
|
||||
if (expectedState != null && expectedState != processModel.getPaymentSentMessageStatePropertySeller().get()) {
|
||||
log.warn("Updating unexpected payment sent message state for {} {}, expected={}, actual={}", getClass().getSimpleName(), getId(), expectedState, processModel.getPaymentSentMessageStatePropertySeller().get());
|
||||
processModel.getPaymentSentMessageStatePropertySeller().set(expectedState);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2017,7 +2017,7 @@ public abstract class Trade extends XmrWalletBase implements Tradable, Model {
|
|||
|
||||
public MessageState getPaymentSentMessageState() {
|
||||
if (isPaymentReceived()) return MessageState.ACKNOWLEDGED;
|
||||
if (processModel.getPaymentSentMessageStateProperty().get() == MessageState.ACKNOWLEDGED) return MessageState.ACKNOWLEDGED;
|
||||
if (processModel.getPaymentSentMessageStatePropertySeller().get() == MessageState.ACKNOWLEDGED) return MessageState.ACKNOWLEDGED;
|
||||
switch (state) {
|
||||
case BUYER_SENT_PAYMENT_SENT_MSG:
|
||||
return MessageState.SENT;
|
||||
|
|
|
@ -163,7 +163,7 @@ public class ProcessModel implements Model, PersistablePayload {
|
|||
// PaymentSentMessage. As well we do an automatic re-send in case it was not ACKed yet.
|
||||
// To enable that even after restart we persist the state.
|
||||
@Setter
|
||||
private ObjectProperty<MessageState> paymentSentMessageStateProperty = new SimpleObjectProperty<>(MessageState.UNDEFINED);
|
||||
private ObjectProperty<MessageState> paymentSentMessageStatePropertySeller = new SimpleObjectProperty<>(MessageState.UNDEFINED);
|
||||
@Setter
|
||||
private ObjectProperty<MessageState> paymentSentMessageStatePropertyArbitrator = new SimpleObjectProperty<>(MessageState.UNDEFINED);
|
||||
private ObjectProperty<Boolean> paymentAccountDecryptedProperty = new SimpleObjectProperty<>(false);
|
||||
|
@ -203,7 +203,7 @@ public class ProcessModel implements Model, PersistablePayload {
|
|||
.setPubKeyRing(pubKeyRing.toProtoMessage())
|
||||
.setUseSavingsWallet(useSavingsWallet)
|
||||
.setFundsNeededForTrade(fundsNeededForTrade)
|
||||
.setPaymentSentMessageState(paymentSentMessageStateProperty.get().name())
|
||||
.setPaymentSentMessageStateSeller(paymentSentMessageStatePropertySeller.get().name())
|
||||
.setPaymentSentMessageStateArbitrator(paymentSentMessageStatePropertyArbitrator.get().name())
|
||||
.setBuyerPayoutAmountFromMediation(buyerPayoutAmountFromMediation)
|
||||
.setSellerPayoutAmountFromMediation(sellerPayoutAmountFromMediation)
|
||||
|
@ -240,9 +240,9 @@ public class ProcessModel implements Model, PersistablePayload {
|
|||
processModel.setTradeFeeAddress(ProtoUtil.stringOrNullFromProto(proto.getTradeFeeAddress()));
|
||||
processModel.setMultisigAddress(ProtoUtil.stringOrNullFromProto(proto.getMultisigAddress()));
|
||||
|
||||
String paymentSentMessageStateString = ProtoUtil.stringOrNullFromProto(proto.getPaymentSentMessageState());
|
||||
MessageState paymentSentMessageState = ProtoUtil.enumFromProto(MessageState.class, paymentSentMessageStateString);
|
||||
processModel.setPaymentSentMessageState(paymentSentMessageState);
|
||||
String paymentSentMessageStateSellerString = ProtoUtil.stringOrNullFromProto(proto.getPaymentSentMessageStateSeller());
|
||||
MessageState paymentSentMessageStateSeller = ProtoUtil.enumFromProto(MessageState.class, paymentSentMessageStateSellerString);
|
||||
processModel.setPaymentSentMessageStateSeller(paymentSentMessageStateSeller);
|
||||
|
||||
String paymentSentMessageStateArbitratorString = ProtoUtil.stringOrNullFromProto(proto.getPaymentSentMessageStateArbitrator());
|
||||
MessageState paymentSentMessageStateArbitrator = ProtoUtil.enumFromProto(MessageState.class, paymentSentMessageStateArbitratorString);
|
||||
|
@ -274,11 +274,11 @@ public class ProcessModel implements Model, PersistablePayload {
|
|||
return getP2PService().getAddress();
|
||||
}
|
||||
|
||||
void setPaymentSentAckMessage(AckMessage ackMessage) {
|
||||
void setPaymentSentAckMessageSeller(AckMessage ackMessage) {
|
||||
MessageState messageState = ackMessage.isSuccess() ?
|
||||
MessageState.ACKNOWLEDGED :
|
||||
MessageState.FAILED;
|
||||
setPaymentSentMessageState(messageState);
|
||||
setPaymentSentMessageStateSeller(messageState);
|
||||
}
|
||||
|
||||
void setPaymentSentAckMessageArbitrator(AckMessage ackMessage) {
|
||||
|
@ -288,8 +288,8 @@ public class ProcessModel implements Model, PersistablePayload {
|
|||
setPaymentSentMessageStateArbitrator(messageState);
|
||||
}
|
||||
|
||||
public void setPaymentSentMessageState(MessageState paymentSentMessageStateProperty) {
|
||||
this.paymentSentMessageStateProperty.set(paymentSentMessageStateProperty);
|
||||
public void setPaymentSentMessageStateSeller(MessageState paymentSentMessageStateProperty) {
|
||||
this.paymentSentMessageStatePropertySeller.set(paymentSentMessageStateProperty);
|
||||
if (tradeManager != null) {
|
||||
tradeManager.requestPersistence();
|
||||
}
|
||||
|
@ -302,6 +302,14 @@ public class ProcessModel implements Model, PersistablePayload {
|
|||
}
|
||||
}
|
||||
|
||||
public boolean isPaymentSentMessageAckedBySeller() {
|
||||
return paymentSentMessageStatePropertySeller.get() == MessageState.ACKNOWLEDGED;
|
||||
}
|
||||
|
||||
public boolean isPaymentSentMessageAckedByArbitrator() {
|
||||
return paymentSentMessageStatePropertyArbitrator.get() == MessageState.ACKNOWLEDGED;
|
||||
}
|
||||
|
||||
void setDepositTxSentAckMessage(AckMessage ackMessage) {
|
||||
MessageState messageState = ackMessage.isSuccess() ?
|
||||
MessageState.ACKNOWLEDGED :
|
||||
|
|
|
@ -652,11 +652,12 @@ public abstract class TradeProtocol implements DecryptedDirectMessageListener, D
|
|||
// handle ack for PaymentSentMessage, which automatically re-sends if not ACKed in a certain time
|
||||
if (ackMessage.getSourceMsgClassName().equals(PaymentSentMessage.class.getSimpleName())) {
|
||||
if (trade.getTradePeer(sender) == trade.getSeller()) {
|
||||
processModel.setPaymentSentAckMessage(ackMessage);
|
||||
processModel.setPaymentSentAckMessageSeller(ackMessage);
|
||||
trade.setStateIfValidTransitionTo(Trade.State.SELLER_RECEIVED_PAYMENT_SENT_MSG);
|
||||
processModel.getTradeManager().requestPersistence();
|
||||
} else if (trade.getTradePeer(sender) == trade.getArbitrator()) {
|
||||
processModel.setPaymentSentAckMessageArbitrator(ackMessage);
|
||||
processModel.getTradeManager().requestPersistence();
|
||||
} else if (!ackMessage.isSuccess()) {
|
||||
String err = "Received AckMessage with error state for " + ackMessage.getSourceMsgClassName() + " from "+ sender + " with tradeId " + trade.getId() + " and errorMessage=" + ackMessage.getErrorMessage();
|
||||
log.warn(err);
|
||||
|
|
|
@ -170,7 +170,7 @@ public abstract class BuyerSendPaymentSentMessage extends SendMailboxMessageTask
|
|||
timer.stop();
|
||||
}
|
||||
if (listener != null) {
|
||||
processModel.getPaymentSentMessageStateProperty().removeListener(listener);
|
||||
processModel.getPaymentSentMessageStatePropertySeller().removeListener(listener);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -194,8 +194,8 @@ public abstract class BuyerSendPaymentSentMessage extends SendMailboxMessageTask
|
|||
|
||||
if (resendCounter == 0) {
|
||||
listener = (observable, oldValue, newValue) -> onMessageStateChange(newValue);
|
||||
processModel.getPaymentSentMessageStateProperty().addListener(listener);
|
||||
onMessageStateChange(processModel.getPaymentSentMessageStateProperty().get());
|
||||
processModel.getPaymentSentMessageStatePropertySeller().addListener(listener);
|
||||
onMessageStateChange(processModel.getPaymentSentMessageStatePropertySeller().get());
|
||||
}
|
||||
|
||||
// first re-send is after 2 minutes, then increase the delay exponentially
|
||||
|
|
|
@ -18,7 +18,6 @@
|
|||
package haveno.core.trade.protocol.tasks;
|
||||
|
||||
import haveno.common.taskrunner.TaskRunner;
|
||||
import haveno.core.network.MessageState;
|
||||
import haveno.core.trade.Trade;
|
||||
import haveno.core.trade.protocol.TradePeer;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
@ -59,6 +58,6 @@ public class BuyerSendPaymentSentMessageToArbitrator extends BuyerSendPaymentSen
|
|||
|
||||
@Override
|
||||
protected boolean isAckedByReceiver() {
|
||||
return trade.getProcessModel().getPaymentSentMessageStatePropertyArbitrator().get() == MessageState.ACKNOWLEDGED;
|
||||
return trade.getProcessModel().isPaymentSentMessageAckedByArbitrator();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -40,25 +40,25 @@ public class BuyerSendPaymentSentMessageToSeller extends BuyerSendPaymentSentMes
|
|||
|
||||
@Override
|
||||
protected void setStateSent() {
|
||||
trade.getProcessModel().setPaymentSentMessageState(MessageState.SENT);
|
||||
trade.getProcessModel().setPaymentSentMessageStateSeller(MessageState.SENT);
|
||||
super.setStateSent();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setStateArrived() {
|
||||
trade.getProcessModel().setPaymentSentMessageState(MessageState.ARRIVED);
|
||||
trade.getProcessModel().setPaymentSentMessageStateSeller(MessageState.ARRIVED);
|
||||
super.setStateArrived();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setStateStoredInMailbox() {
|
||||
trade.getProcessModel().setPaymentSentMessageState(MessageState.STORED_IN_MAILBOX);
|
||||
trade.getProcessModel().setPaymentSentMessageStateSeller(MessageState.STORED_IN_MAILBOX);
|
||||
super.setStateStoredInMailbox();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setStateFault() {
|
||||
trade.getProcessModel().setPaymentSentMessageState(MessageState.FAILED);
|
||||
trade.getProcessModel().setPaymentSentMessageStateSeller(MessageState.FAILED);
|
||||
super.setStateFault();
|
||||
}
|
||||
|
||||
|
@ -72,6 +72,6 @@ public class BuyerSendPaymentSentMessageToSeller extends BuyerSendPaymentSentMes
|
|||
|
||||
@Override
|
||||
protected boolean isAckedByReceiver() {
|
||||
return trade.getState().ordinal() >= Trade.State.SELLER_RECEIVED_PAYMENT_SENT_MSG.ordinal();
|
||||
return trade.getProcessModel().isPaymentSentMessageAckedBySeller();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -100,7 +100,7 @@ public class PendingTradesViewModel extends ActivatableWithDataModel<PendingTrad
|
|||
private final ObjectProperty<BuyerState> buyerState = new SimpleObjectProperty<>();
|
||||
private final ObjectProperty<SellerState> sellerState = new SimpleObjectProperty<>();
|
||||
@Getter
|
||||
private final ObjectProperty<MessageState> messageStateProperty = new SimpleObjectProperty<>(MessageState.UNDEFINED);
|
||||
private final ObjectProperty<MessageState> paymentSentMessageStateProperty = new SimpleObjectProperty<>(MessageState.UNDEFINED);
|
||||
private Subscription tradeStateSubscription;
|
||||
private Subscription paymentAccountDecryptedSubscription;
|
||||
private Subscription payoutStateSubscription;
|
||||
|
@ -186,7 +186,7 @@ public class PendingTradesViewModel extends ActivatableWithDataModel<PendingTrad
|
|||
|
||||
if (messageStateSubscription != null) {
|
||||
messageStateSubscription.unsubscribe();
|
||||
messageStateProperty.set(MessageState.UNDEFINED);
|
||||
paymentSentMessageStateProperty.set(MessageState.UNDEFINED);
|
||||
}
|
||||
|
||||
if (selectedItem != null) {
|
||||
|
@ -200,7 +200,7 @@ public class PendingTradesViewModel extends ActivatableWithDataModel<PendingTrad
|
|||
payoutStateSubscription = EasyBind.subscribe(trade.payoutStateProperty(), state -> {
|
||||
onPayoutStateChanged(state);
|
||||
});
|
||||
messageStateSubscription = EasyBind.subscribe(trade.getProcessModel().getPaymentSentMessageStateProperty(), this::onMessageStateChanged);
|
||||
messageStateSubscription = EasyBind.subscribe(trade.getProcessModel().getPaymentSentMessageStatePropertySeller(), this::onPaymentSentMessageStateChanged);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -215,8 +215,8 @@ public class PendingTradesViewModel extends ActivatableWithDataModel<PendingTrad
|
|||
});
|
||||
}
|
||||
|
||||
private void onMessageStateChanged(MessageState messageState) {
|
||||
messageStateProperty.set(messageState);
|
||||
private void onPaymentSentMessageStateChanged(MessageState messageState) {
|
||||
paymentSentMessageStateProperty.set(messageState);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -52,7 +52,7 @@ public class BuyerStep3View extends TradeStepView {
|
|||
public void activate() {
|
||||
super.activate();
|
||||
|
||||
model.getMessageStateProperty().addListener(messageStateChangeListener);
|
||||
model.getPaymentSentMessageStateProperty().addListener(messageStateChangeListener);
|
||||
|
||||
updateMessageStateInfo();
|
||||
}
|
||||
|
@ -60,7 +60,7 @@ public class BuyerStep3View extends TradeStepView {
|
|||
public void deactivate() {
|
||||
super.deactivate();
|
||||
|
||||
model.getMessageStateProperty().removeListener(messageStateChangeListener);
|
||||
model.getPaymentSentMessageStateProperty().removeListener(messageStateChangeListener);
|
||||
}
|
||||
|
||||
|
||||
|
@ -87,7 +87,7 @@ public class BuyerStep3View extends TradeStepView {
|
|||
}
|
||||
|
||||
private void updateMessageStateInfo() {
|
||||
MessageState messageState = model.getMessageStateProperty().get();
|
||||
MessageState messageState = model.getPaymentSentMessageStateProperty().get();
|
||||
textFieldWithIcon.setText(Res.get("message.state." + messageState.name()));
|
||||
Label iconLabel = textFieldWithIcon.getIconLabel();
|
||||
switch (messageState) {
|
||||
|
|
|
@ -1568,7 +1568,7 @@ message ProcessModel {
|
|||
bytes payout_tx_signature = 4;
|
||||
bool use_savings_wallet = 5;
|
||||
int64 funds_needed_for_trade = 6;
|
||||
string payment_sent_message_state = 7;
|
||||
string payment_sent_message_state_seller = 7;
|
||||
string payment_sent_message_state_arbitrator = 8;
|
||||
bytes maker_signature = 9;
|
||||
TradePeer maker = 10;
|
||||
|
|
Loading…
Reference in a new issue