mirror of
https://github.com/btcpayserver/btcpayserver.git
synced 2025-02-23 06:35:13 +01:00
85 lines
3.2 KiB
JavaScript
85 lines
3.2 KiB
JavaScript
$(function () {
|
|
var ledgerDetected = false;
|
|
var bridge = new ledgerwebsocket.LedgerWebSocketBridge(srvModel + "ws/ledger");
|
|
|
|
var cryptoSelector = $("#CryptoCurrency");
|
|
function GetSelectedCryptoCode() {
|
|
return cryptoSelector.val();
|
|
}
|
|
|
|
function WriteAlert(type, message) {
|
|
|
|
}
|
|
|
|
function Write(prefix, type, message) {
|
|
if (type === "error") {
|
|
$("#no-ledger-info").css("display", "block");
|
|
$("#ledger-in fo").css("display", "none");
|
|
}
|
|
}
|
|
|
|
$(".ledger-info-recommended").on("click", function (elem) {
|
|
elem.preventDefault();
|
|
var account = elem.currentTarget.getAttribute("data-ledgeraccount");
|
|
var cryptoCode = GetSelectedCryptoCode();
|
|
bridge.sendCommand("getxpub", "cryptoCode=" + cryptoCode + "&account=" + account)
|
|
.then(function (result) {
|
|
if (cryptoCode !== GetSelectedCryptoCode())
|
|
return;
|
|
$("#DerivationScheme").val(result.extPubKey);
|
|
$("#DerivationSchemeFormat").val("BTCPay");
|
|
})
|
|
.catch(function (reason) { Write('check', 'error', reason); });
|
|
return false;
|
|
});
|
|
|
|
var updateInfo = function () {
|
|
if (!ledgerDetected)
|
|
return false;
|
|
var cryptoCode = GetSelectedCryptoCode();
|
|
bridge.sendCommand("getxpub", "cryptoCode=" + cryptoCode)
|
|
.catch(function (reason) { Write('check', 'error', reason); })
|
|
.then(function (result) {
|
|
if (!result)
|
|
return;
|
|
if (cryptoCode !== GetSelectedCryptoCode())
|
|
return;
|
|
if (result.error) {
|
|
Write('check', 'error', result.error);
|
|
return;
|
|
}
|
|
else {
|
|
Write('check', 'success', 'This store is configured to use your ledger');
|
|
$("#no-ledger-info").css("display", "none");
|
|
$("#ledger-info").css("display", "block");
|
|
$(".ledger-info-cointype").text(result.coinType);
|
|
}
|
|
});
|
|
};
|
|
|
|
bridge.isSupported()
|
|
.then(function (supported) {
|
|
if (!supported) {
|
|
Write('hw', 'error', 'U2F or Websocket are not supported by this browser');
|
|
}
|
|
else {
|
|
bridge.sendCommand('test', null, 5)
|
|
.catch(function (reason) {
|
|
if (reason.message === "Sign failed")
|
|
reason = "Have you forgot to activate browser support in your ledger app?";
|
|
Write('hw', 'error', reason);
|
|
})
|
|
.then(function (result) {
|
|
if (!result)
|
|
return;
|
|
if (result.error) {
|
|
Write('hw', 'error', result.error);
|
|
} else {
|
|
Write('hw', 'success', 'Ledger detected');
|
|
ledgerDetected = true;
|
|
updateInfo();
|
|
}
|
|
});
|
|
}
|
|
});
|
|
});
|