btcpayserver/BTCPayServer/Components/StoreLightningBalance/Default.cshtml
d11n af93cf2adb
Lightning balance: Handle null values (#3886)
* Lightning balance: Handle null values

* Upgrade Lightning lib
2022-06-21 16:09:18 +09:00

99 lines
5.3 KiB
Text

@using BTCPayServer.Lightning
@model BTCPayServer.Components.StoreLightningBalance.StoreLightningBalanceViewModel
<div id="StoreLightningBalance-@Model.Store.Id" class="widget store-lightning-balance">
<header class="mb-3">
<h6>Lightning Balance</h6>
<a
asp-controller="UIPublicLightningNodeInfo"
asp-action="ShowLightningNodeInfo"app-top-items
asp-route-cryptoCode="@Model.CryptoCode"
asp-route-storeId="@Model.Store.Id"
target="_blank"
id="PublicNodeInfo">
Node Info
</a>
</header>
@if (Model.Balance == null)
{
<p>@Model.ProblemDescription</p>
}
else
{
<div class="balances d-flex flex-wrap gap-3">
@if (Model.TotalOffchain != LightMoney.Zero && Model.Balance.OffchainBalance != null)
{
<div class="balance">
<h3 class="d-inline-block me-1">@Model.TotalOffchain</h3>
<span class="text-secondary fw-semibold text-nowrap">@Model.CryptoCode in channels</span>
<div class="balance-details collapse" id="balanceDetailsOffchain">
@if (Model.Balance.OffchainBalance.Opening != null && Model.Balance.OffchainBalance.Opening != LightMoney.Zero)
{
<div class="mt-2">
<span class="fw-semibold">@Model.Balance.OffchainBalance.Opening</span>
<span class="text-secondary text-nowrap">@Model.CryptoCode opening channels</span>
</div>
}
@if (Model.Balance.OffchainBalance.Local != null)
{
<div class="mt-2">
<span class="fw-semibold">@Model.Balance.OffchainBalance.Local</span>
<span class="text-secondary text-nowrap">@Model.CryptoCode local balance</span>
</div>
}
@if (Model.Balance.OffchainBalance.Remote != null)
{
<div class="mt-2">
<span class="fw-semibold">@Model.Balance.OffchainBalance.Remote</span>
<span class="text-secondary text-nowrap">@Model.CryptoCode remote balance</span>
</div>
}
@if (Model.Balance.OffchainBalance.Closing != null && Model.Balance.OffchainBalance.Closing != LightMoney.Zero)
{
<div class="mt-2">
<span class="fw-semibold">@Model.Balance.OffchainBalance.Closing</span>
<span class="text-secondary text-nowrap">@Model.CryptoCode closing channels</span>
</div>
}
</div>
</div>
}
@if (Model.TotalOnchain != LightMoney.Zero && Model.Balance.OnchainBalance != null)
{
<div class="balance">
<h3 class="d-inline-block me-1">@Model.TotalOnchain</h3>
<span class="text-secondary fw-semibold text-nowrap">@Model.CryptoCode on-chain</span>
<div class="balance-details collapse" id="balanceDetailsOnchain">
@if (Model.Balance.OnchainBalance.Confirmed != null && Model.Balance.OnchainBalance.Confirmed != LightMoney.Zero)
{
<div class="mt-2">
<span class="fw-semibold">@Model.Balance.OnchainBalance.Confirmed</span>
<span class="text-secondary text-nowrap">@Model.CryptoCode confirmed</span>
</div>
}
@if (Model.Balance.OnchainBalance.Unconfirmed != null && Model.Balance.OnchainBalance.Unconfirmed != LightMoney.Zero)
{
<div class="mt-2">
<span class="fw-semibold">@Model.Balance.OnchainBalance.Unconfirmed</span>
<span class="text-secondary text-nowrap">@Model.CryptoCode unconfirmed</span>
</div>
}
@if (Model.Balance.OnchainBalance.Reserved != null && Model.Balance.OnchainBalance.Reserved != LightMoney.Zero)
{
<div class="mt-2">
<span class="fw-semibold">@Model.Balance.OnchainBalance.Reserved</span>
<span class="text-secondary text-nowrap">@Model.CryptoCode reserved</span>
</div>
}
</div>
</div>
}
</div>
@if (Model.Balance.OffchainBalance != null && Model.Balance.OnchainBalance != null && (Model.TotalOffchain != LightMoney.Zero || Model.TotalOnchain != LightMoney.Zero))
{
<a class="d-inline-block mt-3" role="button" data-bs-toggle="collapse" data-bs-target=".balance-details" aria-expanded="false" aria-controls="balanceDetailsOffchain balanceDetailsOnchain">Show details</a>
}
}
</div>