Improve review/broadcast flow and fix test

This commit is contained in:
Dennis Reimann
2021-07-29 17:13:46 +02:00
committed by Andrew Camilleri
parent 63944792b0
commit bcdb1ab1d8
3 changed files with 30 additions and 11 deletions

View File

@@ -890,11 +890,6 @@ namespace BTCPayServer.Tests
Assert.Contains("0.01000000", s.Driver.PageSource); Assert.Contains("0.01000000", s.Driver.PageSource);
s.Driver.FindElement(By.CssSelector("button[value=analyze-psbt]")).Click(); s.Driver.FindElement(By.CssSelector("button[value=analyze-psbt]")).Click();
Assert.EndsWith("psbt", s.Driver.Url); Assert.EndsWith("psbt", s.Driver.Url);
s.Driver.FindElement(By.Id("OtherActionsDropdownToggle")).Click();
s.Driver.FindElement(By.CssSelector("button[value=broadcast]")).Click();
Assert.EndsWith("psbt/ready", s.Driver.Url);
s.Driver.FindElement(By.CssSelector("button[value=broadcast]")).Click(); s.Driver.FindElement(By.CssSelector("button[value=broadcast]")).Click();
Assert.Equal(walletTransactionLink, s.Driver.Url); Assert.Equal(walletTransactionLink, s.Driver.Url);

View File

@@ -86,12 +86,14 @@ namespace BTCPayServer.Controllers
if (await vm.GetPSBT(network.NBitcoinNetwork) is PSBT psbt) if (await vm.GetPSBT(network.NBitcoinNetwork) is PSBT psbt)
{ {
vm.PSBT = vm.SigningContext.PSBT = psbt.ToBase64();
vm.PSBTHex = psbt.ToHex();
vm.Decoded = psbt.ToString(); vm.Decoded = psbt.ToString();
vm.PSBT = psbt.ToBase64(); await FetchTransactionDetails(derivationSchemeSettings, vm, network);
vm.PSBTHex = psbt.ToHex(); return View("WalletPSBTDecoded", vm);
} }
return View(nameof(WalletPSBT), vm ?? new WalletPSBTViewModel() { CryptoCode = walletId.CryptoCode }); return View(vm);
} }
[HttpPost("{walletId}/psbt")] [HttpPost("{walletId}/psbt")]
@@ -176,7 +178,8 @@ namespace BTCPayServer.Controllers
return FilePSBT(psbt, vm.FileName); return FilePSBT(psbt, vm.FileName);
default: default:
return View(vm); var viewName = string.IsNullOrEmpty(vm.PSBT) ? "WalletPSBT" : "WalletPSBTDecoded";
return View(viewName, vm);
} }
} }

View File

@@ -59,7 +59,8 @@
<partial name="_PSBTInfo" model="Model" /> <partial name="_PSBTInfo" model="Model" />
<div class="form-group"> @if (Model.HasErrors)
{
<form method="post" asp-action="WalletPSBT" asp-route-walletId="@Context.GetRouteValue("walletId")"> <form method="post" asp-action="WalletPSBT" asp-route-walletId="@Context.GetRouteValue("walletId")">
<input type="hidden" asp-for="CryptoCode"/> <input type="hidden" asp-for="CryptoCode"/>
<input type="hidden" asp-for="NBXSeedAvailable"/> <input type="hidden" asp-for="NBXSeedAvailable"/>
@@ -71,7 +72,27 @@
<button type="submit" name="command" value="combine" class="btn btn-secondary">Combine</button> <button type="submit" name="command" value="combine" class="btn btn-secondary">Combine</button>
</div> </div>
</form> </form>
</div> }
else
{
<form method="post" asp-action="WalletPSBTReady" asp-route-walletId="@Context.GetRouteValue("walletId")">
<input type="hidden" asp-for="SigningKey" />
<input type="hidden" asp-for="SigningKeyPath" />
<partial name="SigningContext" for="SigningContext" />
<div class="d-flex justify-content-center">
@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>
}
</div>
</form>
}
<p class="my-5 text-center"> <p class="my-5 text-center">
<a href="#ExportOptions" data-bs-toggle="collapse" class="text-secondary">Show export options</a> <a href="#ExportOptions" data-bs-toggle="collapse" class="text-secondary">Show export options</a>