mirror of
https://github.com/btcpayserver/btcpayserver.git
synced 2025-02-22 14:22:40 +01:00
Merge pull request #1937 from NicolasDorier/retry-vault
Add Retry button if a BTCPay Vault operation fails
This commit is contained in:
commit
10bf914d78
5 changed files with 44 additions and 10 deletions
|
@ -1,4 +1,4 @@
|
|||
<script id="VaultConnection" type="text/template">
|
||||
<script id="VaultConnection" type="text/template">
|
||||
<div class="vault-feedback vault-feedback1">
|
||||
<span class="vault-feedback-icon"></span> <span class="vault-feedback-content"></span>
|
||||
</div>
|
||||
|
|
|
@ -95,8 +95,9 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
|
||||
<button class="btn btn-primary vault-retry" style="display:none;" type="button">Retry</button>
|
||||
<button id="vault-confirm" class="btn btn-primary" style="display:none;"></button>
|
||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
@model WalletSendVaultModel
|
||||
@model WalletSendVaultModel
|
||||
@{
|
||||
Layout = "../Shared/_NavLayout.cshtml";
|
||||
ViewData["Title"] = "Manage wallet";
|
||||
|
@ -26,6 +26,7 @@
|
|||
<partial name="SigningContext" for="SigningContext" />
|
||||
</form>
|
||||
<div id="vaultPlaceholder"></div>
|
||||
<button class="btn btn-primary vault-retry" style="display:none;" type="button">Retry</button>
|
||||
<button id="vault-confirm" class="btn btn-primary" style="display:none;"></button>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -50,14 +51,15 @@
|
|||
var html = $("#VaultConnection").html();
|
||||
$("#vaultPlaceholder").html(html);
|
||||
var vaultUI = new vaultui.VaultBridgeUI(ws_uri);
|
||||
if (await vaultUI.askForDevice() && await vaultUI.askSignPSBT({
|
||||
|
||||
while (!await vaultUI.askForDevice() || !await vaultUI.askSignPSBT({
|
||||
walletId: $("#WalletId").val(),
|
||||
psbt: $("#SigningContext_PSBT").val()
|
||||
})) {
|
||||
}
|
||||
$("#SigningContext_PSBT").val(vaultUI.psbt);
|
||||
$("#broadcastForm").submit();
|
||||
}
|
||||
}
|
||||
$(function () {
|
||||
askSign();
|
||||
});
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
function getVaultUI() {
|
||||
function getVaultUI() {
|
||||
var websocketPath = $("#WebsocketPath").text();
|
||||
var loc = window.location, ws_uri;
|
||||
if (loc.protocol === "https:") {
|
||||
|
@ -51,8 +51,8 @@ $(document).ready(function () {
|
|||
$('#btcpayservervault').on('hidden.bs.modal', function () {
|
||||
vaultUI.closeBridge();
|
||||
});
|
||||
if (await vaultUI.askForDevice() && await vaultUI.askForXPubs()) {
|
||||
displayXPubs(vaultUI.xpub);
|
||||
while (! await vaultUI.askForDevice() || ! await vaultUI.askForXPubs()) {
|
||||
}
|
||||
displayXPubs(vaultUI.xpub);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/// <reference path="vaultbridge.js" />
|
||||
/// <reference path="vaultbridge.js" />
|
||||
/// file: vaultbridge.js
|
||||
|
||||
var vaultui = (function () {
|
||||
|
@ -73,6 +73,15 @@ var vaultui = (function () {
|
|||
this.psbt = null;
|
||||
|
||||
this.xpub = null;
|
||||
|
||||
this.retryShowing = false;
|
||||
|
||||
function showRetry() {
|
||||
var button = $(".vault-retry");
|
||||
self.retryShowing = true;
|
||||
button.show();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {VaultFeedback} feedback
|
||||
*/
|
||||
|
@ -88,6 +97,7 @@ var vaultui = (function () {
|
|||
}
|
||||
else if (feedback.type == "failed") {
|
||||
icon.addClass("fa fa-times-circle feedback-icon-failed");
|
||||
showRetry();
|
||||
}
|
||||
var content = $(".vault-feedback." + feedback.category + " " + ".vault-feedback-content");
|
||||
content.html(feedback.txt);
|
||||
|
@ -149,7 +159,28 @@ var vaultui = (function () {
|
|||
return false;
|
||||
}
|
||||
|
||||
this.waitRetryPushed = function () {
|
||||
var button = $(".vault-retry");
|
||||
return new Promise(function (resolve) {
|
||||
button.click(function () {
|
||||
// Cleanup old feedback
|
||||
var icon = $(".vault-feedback-icon");
|
||||
icon.removeClass();
|
||||
icon.addClass("vault-feedback-icon");
|
||||
var content = $(".vault-feedback-content");
|
||||
content.html('');
|
||||
///////////////////
|
||||
button.hide();
|
||||
self.retryShowing = false;
|
||||
resolve(true);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
this.ensureConnectedToBackend = async function () {
|
||||
if (self.retryShowing) {
|
||||
await self.waitRetryPushed();
|
||||
}
|
||||
if (!self.bridge) {
|
||||
$("#vault-dropdown").css("display", "none");
|
||||
show(VaultFeedbacks.vaultLoading);
|
||||
|
|
Loading…
Add table
Reference in a new issue