Remove psbt ready view

The transaction info is now shown on the decoded PSBT page.
This commit is contained in:
Dennis Reimann
2021-07-30 18:30:13 +02:00
committed by Andrew Camilleri
parent de3d966835
commit b4c1f695a8
2 changed files with 8 additions and 101 deletions

View File

@@ -191,26 +191,6 @@ namespace BTCPayServer.Controllers
return await _payjoinClient.RequestPayjoin(bip21, new PayjoinWallet(derivationSchemeSettings), psbt, cancellationToken); return await _payjoinClient.RequestPayjoin(bip21, new PayjoinWallet(derivationSchemeSettings), psbt, cancellationToken);
} }
[HttpGet("{walletId}/psbt/ready")]
public async Task<IActionResult> WalletPSBTReady(
[ModelBinder(typeof(WalletIdModelBinder))]
WalletId walletId,
WalletPSBTReadyViewModel vm)
{
if (vm is null)
return NotFound();
var network = NetworkProvider.GetNetwork<BTCPayNetwork>(walletId.CryptoCode);
var derivationSchemeSettings = GetDerivationSchemeSettings(walletId);
if (derivationSchemeSettings == null)
return NotFound();
try
{
await FetchTransactionDetails(derivationSchemeSettings, vm, network);
}
catch { return BadRequest(); }
return View(nameof(WalletPSBTReady), vm);
}
private async Task FetchTransactionDetails(DerivationSchemeSettings derivationSchemeSettings, WalletPSBTReadyViewModel vm, BTCPayNetwork network) private async Task FetchTransactionDetails(DerivationSchemeSettings derivationSchemeSettings, WalletPSBTReadyViewModel vm, BTCPayNetwork network)
{ {
var psbtObject = PSBT.Parse(vm.SigningContext.PSBT, network.NBitcoinNetwork); var psbtObject = PSBT.Parse(vm.SigningContext.PSBT, network.NBitcoinNetwork);
@@ -316,11 +296,11 @@ namespace BTCPayServer.Controllers
[HttpPost("{walletId}/psbt/ready")] [HttpPost("{walletId}/psbt/ready")]
public async Task<IActionResult> WalletPSBTReady( public async Task<IActionResult> WalletPSBTReady(
[ModelBinder(typeof(WalletIdModelBinder))] [ModelBinder(typeof(WalletIdModelBinder))]
WalletId walletId, WalletPSBTReadyViewModel vm, string command = null, CancellationToken cancellationToken = default) WalletId walletId, WalletPSBTViewModel vm, string command = null, CancellationToken cancellationToken = default)
{ {
if (command == null) if (command == null)
return await WalletPSBTReady(walletId, vm); return await WalletPSBT(walletId, vm);
PSBT psbt = null; PSBT psbt;
var network = NetworkProvider.GetNetwork<BTCPayNetwork>(walletId.CryptoCode); var network = NetworkProvider.GetNetwork<BTCPayNetwork>(walletId.CryptoCode);
DerivationSchemeSettings derivationSchemeSettings = null; DerivationSchemeSettings derivationSchemeSettings = null;
try try
@@ -334,7 +314,7 @@ namespace BTCPayServer.Controllers
catch catch
{ {
vm.GlobalError = "Invalid PSBT"; vm.GlobalError = "Invalid PSBT";
return View(nameof(WalletPSBTReady), vm); return View(nameof(WalletPSBT), vm);
} }
switch (command) switch (command)
@@ -410,7 +390,7 @@ namespace BTCPayServer.Controllers
return await WalletPSBTReady(walletId, vm, "broadcast"); return await WalletPSBTReady(walletId, vm, "broadcast");
case "broadcast" when !psbt.IsAllFinalized() && !psbt.TryFinalize(out var errors): case "broadcast" when !psbt.IsAllFinalized() && !psbt.TryFinalize(out var errors):
vm.SetErrors(errors); vm.SetErrors(errors);
return View(nameof(WalletPSBTReady), vm); return View(nameof(WalletPSBT), vm);
case "broadcast": case "broadcast":
{ {
var transaction = psbt.ExtractTransaction(); var transaction = psbt.ExtractTransaction();
@@ -433,13 +413,13 @@ namespace BTCPayServer.Controllers
} }
vm.GlobalError = $"RPC Error while broadcasting: {broadcastResult.RPCCode} {broadcastResult.RPCCodeMessage} {broadcastResult.RPCMessage}"; vm.GlobalError = $"RPC Error while broadcasting: {broadcastResult.RPCCode} {broadcastResult.RPCCodeMessage} {broadcastResult.RPCMessage}";
return View(nameof(WalletPSBTReady), vm); return View(nameof(WalletPSBT), vm);
} }
} }
catch (Exception ex) catch (Exception ex)
{ {
vm.GlobalError = "Error while broadcasting: " + ex.Message; vm.GlobalError = "Error while broadcasting: " + ex.Message;
return View(nameof(WalletPSBTReady), vm); return View(nameof(WalletPSBT), vm);
} }
if (!TempData.HasStatusMessage()) if (!TempData.HasStatusMessage())
@@ -455,7 +435,7 @@ namespace BTCPayServer.Controllers
}); });
default: default:
vm.GlobalError = "Unknown command"; vm.GlobalError = "Unknown command";
return View(nameof(WalletPSBTReady), vm); return View(nameof(WalletPSBT), vm);
} }
} }

View File

@@ -1,73 +0,0 @@
@model WalletPSBTReadyViewModel
@{
Layout = "_LayoutWizard";
ViewData.SetActivePageAndTitle(WalletsNavPages.PSBT, "Review PSBT", Context.GetStoreData().StoreName);
}
@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">
If you broadcast this transaction, your balance will change:
<br>
@if (Model.Positive)
{
<span class="text-success">@Model.BalanceChange</span>
}
else
{
<span class="text-danger">@Model.BalanceChange</span>
}
</p>
}
else
{
<p class="lead text-secondary mt-3">This PSBT is already finalized. We can't properly detect which input or output belongs to you.</p>
}
</header>
<partial name="_StatusMessage" />
@if (Model.GlobalError != null)
{
<div class="alert alert-danger alert-dismissible" role="alert">
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close">
<vc:icon symbol="close" />
</button>
<span>@Model.GlobalError</span><br/>
</div>
}
<partial name="_PSBTInfo" model="Model" />
<form method="post" asp-action="WalletPSBTReady" asp-route-walletId="@Context.GetRouteValue("walletId")" class="text-center">
<input type="hidden" asp-for="SigningKey" />
<input type="hidden" asp-for="SigningKeyPath" />
<partial name="SigningContext" for="SigningContext" />
@if (!Model.HasErrors)
{
@if (!string.IsNullOrEmpty(Model.SigningContext?.PayJoinBIP21))
{
<button type="submit" class="btn btn-primary" name="command" value="payjoin">Broadcast (Payjoin)</button>
<span class="mx-2">or</span>
<button type="submit" class="btn btn-secondary" name="command" value="broadcast">Broadcast (Simple)</button>
}
else
{
<button type="submit" class="btn btn-primary" name="command" value="broadcast">Broadcast it</button>
}
<span class="mx-2">or</span>
}
<button type="submit" class="btn btn-secondary" name="command" value="analyze-psbt">View PSBT</button>
</form>