2021-02-11 11:48:54 +01:00
@model WalletSetupViewModel
@{
Layout = "_LayoutWalletSetup";
2021-12-31 08:36:38 +01:00
ViewData.SetActivePage(StoreNavPages.OnchainSettings, "Connect your hardware wallet", Context.GetStoreData().Id);
2021-02-11 11:48:54 +01:00
}
@section Navbar {
2022-01-07 12:32:00 +09:00
<a asp-controller="UIStores" asp-action="ImportWallet" asp-route-storeId="@Model.StoreId" asp-route-cryptoCode="@Model.CryptoCode" asp-route-method="">
2021-02-11 11:48:54 +01:00
<vc:icon symbol="back" />
</a>
}
<header class="text-center">
<h1>@ViewData["Title"]</h1>
<p class="lead text-secondary mt-3">In order to securely connect to your hardware wallet you must first download, install, and run the BTCPay Server Vault.</p>
</header>
@if (!ViewContext.ModelState.IsValid)
{
2023-12-21 15:43:12 +01:00
<div asp-validation-summary="All"></div>
2021-02-11 11:48:54 +01:00
}
2023-12-07 14:00:15 +09:00
<partial name="LocalhostBrowserSupport" />
2021-02-11 11:48:54 +01:00
<div class="row mt-5 mb-4">
<div class="col-md-8 mx-auto">
<div id="vault-status" class="mb-4"></div>
<div id="vault-xpub" class="mt-4" style="display:none;">
<div class="form-group">
2022-12-14 04:06:54 +01:00
<label for="addressType" class="form-label">Address type</label>
2021-05-19 04:39:27 +02:00
<select id="addressType" name="addressType" class="form-select w-auto">
2021-02-11 11:48:54 +01:00
<option value="segwit">Segwit (Recommended, cheapest fee)</option>
<option value="segwitWrapped">Segwit wrapped (Compatible with old wallets)</option>
<option value="legacy">Legacy (Not recommended)</option>
2021-09-03 12:07:12 +05:30
@if (ViewData["CanUseTaproot"] is true)
{
<option value="taproot">Taproot (ONLY FOR DEVELOPMENT)</option>
}
2021-02-11 11:48:54 +01:00
</select>
</div>
<div class="form-group">
2022-12-14 04:06:54 +01:00
<label for="accountNumber" class="form-label">Account</label>
2023-07-22 14:15:41 +02:00
<input id="accountNumber" class="form-control" name="accountNumber" type="number" value="0" min="0" step="1" style="max-width:12ch;" />
2021-02-11 11:48:54 +01:00
</div>
</div>
<div>
<button type="submit" id="vault-confirm" class="btn btn-primary" style="display:none;"></button>
<button type="button" id="vault-retry" class="btn btn-secondary" style="display:none;">Retry</button>
</div>
</div>
</div>
<form method="post" id="walletInfo" style="display:none;">
<input asp-for="Config" type="hidden" />
<input asp-for="CryptoCode" type="hidden" />
<input asp-for="AccountKey" type="hidden" />
<input asp-for="Source" type="hidden" value="Vault"/>
<input asp-for="DerivationSchemeFormat" type="hidden" value="BTCPay" />
<div class="row mb-5">
<div class="col-md-8 mx-auto">
<h4 class="mb-3">Public Key Information</h4>
<div class="form-group">
2021-06-06 13:44:54 +02:00
<label asp-for="DerivationScheme" class="form-label"></label>
2021-05-19 04:39:27 +02:00
<textarea asp-for="DerivationScheme" class="form-control store-derivation-scheme font-monospace py-2" rows="3" readonly></textarea>
2021-02-11 11:48:54 +01:00
</div>
<div class="form-group">
2021-06-06 13:44:54 +02:00
<label asp-for="RootFingerprint" class="form-label"></label>
2021-02-11 11:48:54 +01:00
<input asp-for="RootFingerprint" class="form-control" readonly />
</div>
<div class="form-group">
2021-06-06 13:44:54 +02:00
<label asp-for="KeyPath" class="form-label"></label>
2021-02-11 11:48:54 +01:00
<input asp-for="KeyPath" class="form-control" readonly />
</div>
<button name="command" type="submit" class="btn btn-primary" value="save" id="Continue">Continue</button>
</div>
</div>
</form>
2021-05-19 04:39:27 +02:00
@section PageFootContent {
2021-04-08 15:32:42 +02:00
<partial name="_ValidationScriptsPartial" />
<partial name="VaultElements" />
2021-02-11 11:48:54 +01:00
<script src="~/js/vaultbridge.js" defer asp-append-version="true"></script>
<script src="~/js/vaultbridge.ui.js" defer asp-append-version="true"></script>
2021-05-19 04:39:27 +02:00
<script>
2021-02-11 11:48:54 +01:00
window.addEventListener("load", async () => {
2022-01-07 12:32:00 +09:00
const wsPath = "@Url.Action("VaultBridgeConnection", "UIVault", new {cryptoCode = Model.CryptoCode})";
2021-02-11 11:48:54 +01:00
const wsProto = location.protocol.replace(/^http/, "ws");
const vaultUI = new vaultui.VaultBridgeUI(`${wsProto}//${location.host}${wsPath}`);
document.getElementById("vault-status").innerHTML = document.getElementById("VaultConnection").innerHTML;
window.addEventListener("beforeunload", () => {
vaultUI.closeBridge();
});
while (!await vaultUI.askForDevice() || !await vaultUI.askForXPubs()) {};
const { xpub: { strategy, fingerprint, accountKey, keyPath } } = vaultUI;
document.getElementById("DerivationScheme").value = strategy;
document.getElementById("RootFingerprint").value = fingerprint;
document.getElementById("AccountKey").value = accountKey;
document.getElementById("KeyPath").value = keyPath;
document.getElementById("walletInfo").style = null;
});
</script>
}