mirror of
https://github.com/btcpayserver/btcpayserver.git
synced 2025-03-10 09:19:24 +01:00
Public LN Node view: Consistency update (#5466)
This commit is contained in:
parent
2f23bad3bc
commit
d46543ae16
2 changed files with 73 additions and 68 deletions
|
@ -37,31 +37,32 @@ namespace BTCPayServer.Controllers
|
||||||
if (store == null)
|
if (store == null)
|
||||||
return NotFound();
|
return NotFound();
|
||||||
|
|
||||||
|
var storeBlob = store.GetStoreBlob();
|
||||||
|
var vm = new ShowLightningNodeInfoViewModel
|
||||||
|
{
|
||||||
|
CryptoCode = cryptoCode,
|
||||||
|
StoreName = store.StoreName,
|
||||||
|
BrandColor = storeBlob.BrandColor,
|
||||||
|
LogoFileId = storeBlob.LogoFileId,
|
||||||
|
CssFileId = storeBlob.CssFileId
|
||||||
|
};
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var paymentMethodDetails = GetExistingLightningSupportedPaymentMethod(cryptoCode, store);
|
var paymentMethodDetails = GetExistingLightningSupportedPaymentMethod(cryptoCode, store);
|
||||||
var network = _BtcPayNetworkProvider.GetNetwork<BTCPayNetwork>(cryptoCode);
|
var network = _BtcPayNetworkProvider.GetNetwork<BTCPayNetwork>(cryptoCode);
|
||||||
var nodeInfo =
|
var nodeInfo = await _LightningLikePaymentHandler.GetNodeInfo(paymentMethodDetails, network,
|
||||||
await _LightningLikePaymentHandler.GetNodeInfo(paymentMethodDetails, network, new InvoiceLogs(), throws: true);
|
new InvoiceLogs(), throws: true);
|
||||||
|
|
||||||
return View(new ShowLightningNodeInfoViewModel
|
vm.Available = true;
|
||||||
{
|
vm.CryptoImage = GetImage(paymentMethodDetails.PaymentId, network);
|
||||||
Available = true,
|
vm.NodeInfo = nodeInfo.Select(n => new ShowLightningNodeInfoViewModel.NodeData(n)).ToArray();
|
||||||
NodeInfo = nodeInfo.Select(n => new ShowLightningNodeInfoViewModel.NodeData(n)).ToArray(),
|
|
||||||
CryptoCode = cryptoCode,
|
|
||||||
CryptoImage = GetImage(paymentMethodDetails.PaymentId, network),
|
|
||||||
StoreName = store.StoreName
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
return View(new ShowLightningNodeInfoViewModel
|
// ignored
|
||||||
{
|
|
||||||
Available = false,
|
|
||||||
CryptoCode = cryptoCode,
|
|
||||||
StoreName = store.StoreName
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return View(vm);
|
||||||
}
|
}
|
||||||
|
|
||||||
private LightningSupportedPaymentMethod GetExistingLightningSupportedPaymentMethod(string cryptoCode, StoreData store)
|
private LightningSupportedPaymentMethod GetExistingLightningSupportedPaymentMethod(string cryptoCode, StoreData store)
|
||||||
|
@ -107,5 +108,8 @@ namespace BTCPayServer.Controllers
|
||||||
public string CryptoCode { get; set; }
|
public string CryptoCode { get; set; }
|
||||||
public string CryptoImage { get; set; }
|
public string CryptoImage { get; set; }
|
||||||
public string StoreName { get; set; }
|
public string StoreName { get; set; }
|
||||||
|
public string LogoFileId { get; set; }
|
||||||
|
public string CssFileId { get; set; }
|
||||||
|
public string BrandColor { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,69 +8,70 @@
|
||||||
<html lang="en" @(Env.IsDeveloping ? " data-devenv" : "")>
|
<html lang="en" @(Env.IsDeveloping ? " data-devenv" : "")>
|
||||||
<head>
|
<head>
|
||||||
<partial name="LayoutHead" />
|
<partial name="LayoutHead" />
|
||||||
|
<partial name="LayoutHeadStoreBranding" model="@(Model.BrandColor, Model.CssFileId, "", "")" />
|
||||||
<link href="~/main/qrcode.css" rel="stylesheet" asp-append-version="true" />
|
<link href="~/main/qrcode.css" rel="stylesheet" asp-append-version="true" />
|
||||||
|
<style>#app { --wrap-max-width: 400px; }</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body class="min-vh-100">
|
||||||
<div id="app" class="container">
|
<div id="app" class="public-page-wrap">
|
||||||
<div class="row" style="height:100vh">
|
<main class="flex-grow-1">
|
||||||
<div class="mx-auto my-auto" style="max-width:360px;">
|
<div class="d-flex flex-column justify-content-center gap-4">
|
||||||
<div class="card border-0">
|
<partial name="_StoreHeader" model="(Model.StoreName, Model.LogoFileId)" />
|
||||||
<div class="card-body p-4">
|
<section class="tile">
|
||||||
<h1 class="h2 card-title text-center mt-3">@Model.StoreName</h1>
|
<h2 class="h4 card-subtitle text-center text-secondary mt-1 mb-3">
|
||||||
<h2 class="h4 card-subtitle text-center text-secondary my-3">
|
<span>@Model.CryptoCode</span>
|
||||||
<span>@Model.CryptoCode</span>
|
Lightning Node
|
||||||
Lightning Node
|
</h2>
|
||||||
</h2>
|
<h4 class="d-flex align-items-center justify-content-center gap-2 my-4">
|
||||||
<h4 class="d-flex align-items-center justify-content-center gap-2">
|
<span class="btcpay-status btcpay-status--@(Model.Available ? "enabled" : "disabled")" style="margin-top:.1rem;"></span>
|
||||||
<span class="btcpay-status btcpay-status--@(Model.Available ? "enabled" : "disabled")" style="margin-top:.1rem;"></span>
|
@(Model.Available ? "Online" : "Unavailable")
|
||||||
<span>
|
</h4>
|
||||||
@(Model.Available ? "Online" : "Unavailable")
|
@if (Model.Available)
|
||||||
</span>
|
{
|
||||||
</h4>
|
@if (Model.NodeInfo.Any())
|
||||||
@if (Model.Available)
|
|
||||||
{
|
{
|
||||||
@if (Model.NodeInfo.Any())
|
@if (Model.NodeInfo.Length > 1)
|
||||||
{
|
{
|
||||||
@if (Model.NodeInfo.Length > 1)
|
<div class="nav btcpay-pills justify-content-center gap-3 my-4" id="nodeInfo-tab" role="tablist">
|
||||||
{
|
|
||||||
<ul class="nav nav-pills justify-content-center mt-4" id="nodeInfo-tab" role="tablist">
|
|
||||||
@for (var i = 0; i < Model.NodeInfo.Length; i++)
|
|
||||||
{
|
|
||||||
var nodeInfo = Model.NodeInfo[i];
|
|
||||||
<li class="nav-item" role="presentation">
|
|
||||||
<button class="nav-link w-100px @(i == 0 ? "active" : "")" id="nodeInfo-tab-@i" data-bs-toggle="pill" data-bs-target="#nodeInfo-@i" type="button" role="tab" aria-controls="nodeInfo-@i" aria-selected="true">@(nodeInfo.IsTor ? "Tor" : "Clearnet")</button>
|
|
||||||
</li>
|
|
||||||
}
|
|
||||||
</ul>
|
|
||||||
}
|
|
||||||
<div class="tab-content" id="nodeInfo-tabContent">
|
|
||||||
@for (var i = 0; i < Model.NodeInfo.Length; i++)
|
@for (var i = 0; i < Model.NodeInfo.Length; i++)
|
||||||
{
|
{
|
||||||
var nodeInfo = Model.NodeInfo[i].ToString();
|
var nodeInfo = Model.NodeInfo[i];
|
||||||
<div class="tab-pane fade @(i == 0 ? "show active" : "")" id="nodeInfo-@i" role="tabpanel" aria-labelledby="nodeInfo-tab-@i">
|
var title = nodeInfo.IsTor ? "Tor" : "Clearnet";
|
||||||
<div class="qr-container my-4 w-100">
|
<button class="btcpay-pill w-125px @(i == 0 ? "active" : "")" id="nodeInfo-tab-@i" data-bs-toggle="pill" data-bs-target="#nodeInfo-@i" type="button" role="tab" aria-controls="nodeInfo-@i" aria-selected="true">@title</button>
|
||||||
<img alt="@Model.CryptoCode" class="qr-icon" src="@Model.CryptoImage"/>
|
|
||||||
<vc:qr-code data="@nodeInfo"/>
|
|
||||||
</div>
|
|
||||||
<div class="input-group" data-clipboard="@nodeInfo">
|
|
||||||
<input type="text" class="form-control" readonly="readonly" value="@nodeInfo" id="nodeInfo-addr-@i"/>
|
|
||||||
<button type="button" class="btn btn-outline-secondary px-3">
|
|
||||||
<vc:icon symbol="copy" />
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
else
|
<div class="tab-content" id="nodeInfo-tabContent">
|
||||||
{
|
@for (var i = 0; i < Model.NodeInfo.Length; i++)
|
||||||
<p class="text-center mt-4">No public address available.</p>
|
{
|
||||||
}
|
var nodeInfo = Model.NodeInfo[i];
|
||||||
|
var title = nodeInfo.IsTor ? "Tor" : "Clearnet";
|
||||||
|
var value = nodeInfo.ToString();
|
||||||
|
<div class="tab-pane fade @(i == 0 ? "show active" : "")" id="nodeInfo-@i" role="tabpanel" aria-labelledby="nodeInfo-tab-@i">
|
||||||
|
<div class="payment-box">
|
||||||
|
<div class="qr-container">
|
||||||
|
<vc:qr-code data="@value" />
|
||||||
|
<img src="@Model.CryptoImage" alt="@Model.CryptoCode" class="qr-icon" />
|
||||||
|
</div>
|
||||||
|
<div class="input-group mt-3">
|
||||||
|
<div class="form-floating">
|
||||||
|
<vc:truncate-center text="@value" padding="15" elastic="true" classes="form-control-plaintext" />
|
||||||
|
<label>@title</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
}
|
}
|
||||||
</div>
|
else
|
||||||
</div>
|
{
|
||||||
|
<p class="text-center mt-4">No public address available.</p>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</section>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</main>
|
||||||
</div>
|
</div>
|
||||||
<partial name="LayoutFoot" />
|
<partial name="LayoutFoot" />
|
||||||
</body>
|
</body>
|
||||||
|
|
Loading…
Add table
Reference in a new issue