Files
btcpayserver/BTCPayServer/Views/Wallets/WalletPSBTExport.cshtml
Dennis Reimann de3d966835 WIP
2021-09-02 10:39:35 +02:00

112 lines
5.1 KiB
Plaintext

@model WalletPSBTViewModel
@addTagHelper *, BundlerMinifier.TagHelpers
@{
Layout = "_LayoutWizard";
ViewData.SetActivePageAndTitle(WalletsNavPages.PSBT, "PSBT Signing", Context.GetStoreData().StoreName);
}
@section PageHeadContent {
<link href="~/vendor/vue-qrcode-reader/vue-qrcode-reader.css" rel="stylesheet" asp-append-version="true"/>
}
@section PageFootContent {
<bundle name="wwwroot/bundles/camera-bundle.min.js"></bundle>
<script>
document.addEventListener("DOMContentLoaded", function () {
initQRShow("Scan the PSBT with your wallet", @Json.Serialize(Model.PSBTHex), "scan-qr-modal");
initCameraScanningApp("Scan the PSBT from your wallet", function (data){
$("textarea#ImportedPSBT").val(data);
$("#Decode").click();
}, "scanModal");
});
</script>
}
@section Navbar {
<a asp-action="WalletPSBT" asp-route-walletId="@Context.GetRouteValue("walletId")" onclick="history.back();return false;">
<vc:icon symbol="back" />
</a>
<a asp-action="WalletSend" asp-route-walletId="@Context.GetRouteValue("walletId")" class="cancel">
<vc:icon symbol="close" />
</a>
}
<header class="text-center">
<h1>@ViewData["PageTitle"]</h1>
@if (Model.CanCalculateBalance)
{
<p class="lead text-secondary mt-3">
This transaction will change your balance:
<br>
@if (Model.Positive)
{
<span class="text-success">@Model.BalanceChange</span>
}
else
{
<span class="text-danger">@Model.BalanceChange</span>
}
</p>
}
</header>
<partial name="_PSBTInfo" model="Model" />
<p class="lead text-secondary mt-5">
Export the PSBT for your wallet. Sign it with your wallet and
import the signed PSBT version here for finalization and broadcasting.
</p>
<div class="accordion" id="PSBTOptions">
<div class="accordion-item">
<h2 class="accordion-header" id="PSBTOptionsExportHeader">
<button type="button" class="accordion-button" data-bs-toggle="collapse" data-bs-target="#PSBTOptionsExportContent" aria-controls="PSBTOptionsExportContent" aria-expanded="true">
<span class="h5">Export PSBT for signing</span>
<vc:icon symbol="caret-down"/>
</button>
</h2>
<div id="PSBTOptionsExportContent" class="accordion-collapse collapse show" aria-labelledby="PSBTOptionsExportHeader" data-bs-parent="#PSBTOptions">
<div class="accordion-body">
<form method="post" asp-action="WalletPSBT" asp-route-walletId="@Context.GetRouteValue("walletId")">
<input type="hidden" asp-for="CryptoCode"/>
<input type="hidden" asp-for="PSBT"/>
<div class="form-group d-flex">
<button name="command" type="submit" class="btn btn-primary" value="save-psbt">Download PSBT file</button>
<button name="command" type="button" class="btn btn-primary only-for-js ms-2" data-bs-toggle="modal" data-bs-target="#scan-qr-modal">Show QR for wallet camera</button>
</div>
</form>
</div>
</div>
</div>
<div class="accordion-item">
<h2 class="accordion-header" id="PSBTOptionsImportHeader">
<button type="button" class="accordion-button collapsed" data-bs-toggle="collapse" data-bs-target="#PSBTOptionsImportContent" aria-controls="PSBTOptionsImportContent" aria-expanded="false">
<span class="h5">Import signed PSBT</span>
<vc:icon symbol="caret-down"/>
</button>
</h2>
<div id="PSBTOptionsImportContent" class="accordion-collapse collapse" aria-labelledby="PSBTOptionsImportHeader" data-bs-parent="#PSBTOptions">
<div class="accordion-body">
<form class="form-group" method="post" asp-action="WalletPSBT" asp-route-walletId="@Context.GetRouteValue("walletId")" enctype="multipart/form-data">
<div class="form-group">
<label for="ImportedPSBT" class="form-label">PSBT content</label>
<textarea id="ImportedPSBT" name="PSBT" class="form-control" rows="5"></textarea>
</div>
<div class="form-group">
<label asp-for="UploadedPSBTFile" class="form-label"></label>
<input asp-for="UploadedPSBTFile" type="file" class="form-control">
</div>
<div class="d-flex">
<button type="submit" name="command" value="decode" class="btn btn-primary" id="Decode">Decode PSBT</button>
<button type="button" id="scanqrcode" class="btn btn-primary only-for-js ms-2" data-bs-toggle="modal" data-bs-target="#scanModal">Scan wallet QR with camera</button>
</div>
</form>
</div>
</div>
</div>
</div>
<partial name="ShowQR"/>
<partial name="CameraScanner"/>