mirror of
https://github.com/haveno-dex/haveno.git
synced 2025-08-13 17:05:40 -04:00
handle timeout during place offer protocol
This commit is contained in:
parent
e726071841
commit
83b8616f6f
3 changed files with 53 additions and 55 deletions
|
@ -50,7 +50,7 @@ import bisq.core.util.coin.CoinFormatter;
|
|||
import bisq.core.util.coin.CoinUtil;
|
||||
|
||||
import bisq.network.p2p.P2PService;
|
||||
|
||||
import bisq.common.handlers.ErrorMessageHandler;
|
||||
import bisq.common.util.MathUtils;
|
||||
import bisq.common.util.Utilities;
|
||||
|
||||
|
@ -90,8 +90,6 @@ import java.util.stream.Collectors;
|
|||
|
||||
import lombok.Getter;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import static bisq.core.payment.payload.PaymentMethod.HAL_CASH_ID;
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static java.util.Comparator.comparing;
|
||||
|
@ -313,12 +311,12 @@ public abstract class MutableOfferDataModel extends OfferDataModel {
|
|||
paymentAccount);
|
||||
}
|
||||
|
||||
void onPlaceOffer(Offer offer, TransactionResultHandler resultHandler) {
|
||||
void onPlaceOffer(Offer offer, TransactionResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) {
|
||||
openOfferManager.placeOffer(offer,
|
||||
useSavingsWallet,
|
||||
triggerPrice,
|
||||
resultHandler,
|
||||
log::error);
|
||||
errorMessageHandler);
|
||||
}
|
||||
|
||||
void onPaymentAccountSelected(PaymentAccount paymentAccount) {
|
||||
|
|
|
@ -58,7 +58,6 @@ import bisq.core.util.validation.AltcoinValidator;
|
|||
import bisq.core.util.validation.FiatPriceValidator;
|
||||
import bisq.core.util.validation.InputValidator;
|
||||
import bisq.core.util.validation.MonetaryValidator;
|
||||
import bisq.common.Timer;
|
||||
import bisq.common.UserThread;
|
||||
import bisq.common.app.DevEnv;
|
||||
import bisq.common.util.MathUtils;
|
||||
|
@ -173,7 +172,6 @@ public abstract class MutableOfferViewModel<M extends MutableOfferDataModel> ext
|
|||
private ChangeListener<Boolean> isWalletFundedListener;
|
||||
private ChangeListener<String> errorMessageListener;
|
||||
protected Offer offer;
|
||||
private Timer timeoutTimer;
|
||||
private boolean inputIsMarketBasedPrice;
|
||||
private ChangeListener<Boolean> useMarketBasedPriceListener;
|
||||
private boolean ignorePriceStringListener, ignoreVolumeStringListener, ignoreAmountStringListener, ignoreSecurityDepositStringListener;
|
||||
|
@ -253,7 +251,6 @@ public abstract class MutableOfferViewModel<M extends MutableOfferDataModel> ext
|
|||
protected void deactivate() {
|
||||
removeBindings();
|
||||
removeListeners();
|
||||
stopTimeoutTimer();
|
||||
}
|
||||
|
||||
private void addBindings() {
|
||||
|
@ -611,41 +608,19 @@ public abstract class MutableOfferViewModel<M extends MutableOfferDataModel> ext
|
|||
errorMessage.set(null);
|
||||
createOfferRequested = true;
|
||||
|
||||
if (timeoutTimer == null) {
|
||||
timeoutTimer = UserThread.runAfter(() -> {
|
||||
stopTimeoutTimer();
|
||||
createOfferRequested = false;
|
||||
errorMessage.set(Res.get("createOffer.timeoutAtPublishing"));
|
||||
|
||||
updateButtonDisableState();
|
||||
updateSpinnerInfo();
|
||||
|
||||
resultHandler.run();
|
||||
}, 60);
|
||||
}
|
||||
errorMessageListener = (observable, oldValue, newValue) -> {
|
||||
if (newValue != null) {
|
||||
stopTimeoutTimer();
|
||||
createOfferRequested = false;
|
||||
if (offer.getState() == Offer.State.OFFER_FEE_RESERVED)
|
||||
errorMessage.set(newValue + Res.get("createOffer.errorInfo"));
|
||||
else
|
||||
errorMessage.set(newValue);
|
||||
|
||||
updateButtonDisableState();
|
||||
updateSpinnerInfo();
|
||||
|
||||
resultHandler.run();
|
||||
}
|
||||
};
|
||||
|
||||
offer.errorMessageProperty().addListener(errorMessageListener);
|
||||
|
||||
dataModel.onPlaceOffer(offer, transaction -> {
|
||||
stopTimeoutTimer();
|
||||
resultHandler.run();
|
||||
placeOfferCompleted.set(true);
|
||||
errorMessage.set(null);
|
||||
}, errMessage -> {
|
||||
createOfferRequested = false;
|
||||
if (offer.getState() == Offer.State.OFFER_FEE_RESERVED) errorMessage.set(errMessage + Res.get("createOffer.errorInfo"));
|
||||
else errorMessage.set(errMessage);
|
||||
|
||||
updateButtonDisableState();
|
||||
updateSpinnerInfo();
|
||||
|
||||
resultHandler.run();
|
||||
});
|
||||
|
||||
updateButtonDisableState();
|
||||
|
@ -1287,13 +1262,6 @@ public abstract class MutableOfferViewModel<M extends MutableOfferDataModel> ext
|
|||
isPlaceOfferButtonDisabled.set(createOfferRequested || !inputDataValid || !dataModel.getIsBtcWalletFunded().get());
|
||||
}
|
||||
|
||||
private void stopTimeoutTimer() {
|
||||
if (timeoutTimer != null) {
|
||||
timeoutTimer.stop();
|
||||
timeoutTimer = null;
|
||||
}
|
||||
}
|
||||
|
||||
private CoinFormatter getFormatterForMakerFee() {
|
||||
return btcFormatter;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue