Merge pull request #5427 from jmacxx/fix_issue_5334

Show a SPV resync suggestion if trade remains unconfirmed for 3 hours or more
This commit is contained in:
Christoph Atteneder 2021-04-22 09:21:21 +02:00 committed by GitHub
commit de76bd051b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 23 additions and 0 deletions

View File

@ -594,6 +594,11 @@ portfolio.pending.invalidTx=There is an issue with a missing or invalid transact
Open a support ticket to get assistance from a Mediator.\n\n\ Open a support ticket to get assistance from a Mediator.\n\n\
Error message: {0} Error message: {0}
portfolio.pending.unconfirmedTooLong=Security deposit transaction on trade {0} is still unconfirmed after {1} hours. \
Check the deposit transaction at a blockchain explorer. If it has been confirmed but it's not being displayed \
at Bisq, make a data backup and a SPV resync. [HYPERLINK:https://bisq.wiki/Resyncing_SPV_file]\n\n\
Contact Bisq support [HYPERLINK:https://keybase.io/team/bisq] if you have doubts or the issue persists.
portfolio.pending.step1.waitForConf=Wait for blockchain confirmation portfolio.pending.step1.waitForConf=Wait for blockchain confirmation
portfolio.pending.step2_buyer.startPayment=Start payment portfolio.pending.step2_buyer.startPayment=Start payment
portfolio.pending.step2_seller.waitPaymentStarted=Wait until payment has started portfolio.pending.step2_seller.waitPaymentStarted=Wait until payment has started

View File

@ -33,6 +33,7 @@ import bisq.core.support.dispute.DisputeResult;
import bisq.core.support.dispute.mediation.MediationResultState; import bisq.core.support.dispute.mediation.MediationResultState;
import bisq.core.trade.Contract; import bisq.core.trade.Contract;
import bisq.core.trade.Trade; import bisq.core.trade.Trade;
import bisq.core.user.DontShowAgainLookup;
import bisq.core.user.Preferences; import bisq.core.user.Preferences;
import bisq.core.util.FormattingUtils; import bisq.core.util.FormattingUtils;
@ -69,6 +70,9 @@ import org.fxmisc.easybind.Subscription;
import javafx.beans.property.BooleanProperty; import javafx.beans.property.BooleanProperty;
import javafx.beans.value.ChangeListener; import javafx.beans.value.ChangeListener;
import java.time.Duration;
import java.time.Instant;
import java.util.Optional; import java.util.Optional;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -730,6 +734,18 @@ public abstract class TradeStepView extends AnchorPane {
} }
} }
protected void checkForTimeout() {
long unconfirmedHours = Duration.between(trade.getTakeOfferDate().toInstant(), Instant.now()).toHours();
if (unconfirmedHours >= 3 && !trade.hasFailed()) {
String key = "tradeUnconfirmedTooLong_" + trade.getShortId();
if (DontShowAgainLookup.showAgain(key)) {
new Popup().warning(Res.get("portfolio.pending.unconfirmedTooLong", trade.getShortId(), unconfirmedHours))
.dontShowAgainId(key)
.closeButtonText(Res.get("shared.ok"))
.show();
}
}
}
/////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////
// TradeDurationLimitInfo // TradeDurationLimitInfo

View File

@ -39,6 +39,7 @@ public class BuyerStep1View extends TradeStepView {
super.onPendingTradesInitialized(); super.onPendingTradesInitialized();
validatePayoutTx(); validatePayoutTx();
validateDepositInputs(); validateDepositInputs();
checkForTimeout();
} }

View File

@ -38,6 +38,7 @@ public class SellerStep1View extends TradeStepView {
protected void onPendingTradesInitialized() { protected void onPendingTradesInitialized() {
super.onPendingTradesInitialized(); super.onPendingTradesInitialized();
validateDepositInputs(); validateDepositInputs();
checkForTimeout();
} }
/////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////