mirror of
https://github.com/btcpayserver/btcpayserver.git
synced 2025-03-13 03:16:46 +01:00
Allow reset boltcard on balance
This commit is contained in:
parent
413b88faf1
commit
e64a47ff96
4 changed files with 46 additions and 17 deletions
|
@ -5,8 +5,10 @@ using System.Threading.Tasks;
|
||||||
using AngleSharp.Dom;
|
using AngleSharp.Dom;
|
||||||
using BTCPayServer.Client.Models;
|
using BTCPayServer.Client.Models;
|
||||||
using BTCPayServer.Controllers;
|
using BTCPayServer.Controllers;
|
||||||
|
using BTCPayServer.Controllers.Greenfield;
|
||||||
using BTCPayServer.Data;
|
using BTCPayServer.Data;
|
||||||
using BTCPayServer.HostedServices;
|
using BTCPayServer.HostedServices;
|
||||||
|
using BTCPayServer.Models;
|
||||||
using BTCPayServer.Plugins.BoltcardBalance.ViewModels;
|
using BTCPayServer.Plugins.BoltcardBalance.ViewModels;
|
||||||
using BTCPayServer.Plugins.BoltcardFactory;
|
using BTCPayServer.Plugins.BoltcardFactory;
|
||||||
using BTCPayServer.Services;
|
using BTCPayServer.Services;
|
||||||
|
@ -87,7 +89,8 @@ namespace BTCPayServer.Plugins.BoltcardBalance.Controllers
|
||||||
Currency = blob.Currency,
|
Currency = blob.Currency,
|
||||||
AmountDue = blob.Limit - totalPaid,
|
AmountDue = blob.Limit - totalPaid,
|
||||||
LNUrlBech32 = bech32LNUrl.AbsoluteUri,
|
LNUrlBech32 = bech32LNUrl.AbsoluteUri,
|
||||||
LNUrlPay = Url.Action(nameof(UIBoltcardController.GetPayRequest), "UIBoltcard", new { p }, "lnurlp")
|
LNUrlPay = Url.Action(nameof(UIBoltcardController.GetPayRequest), "UIBoltcard", new { p }, "lnurlp"),
|
||||||
|
BoltcardKeysResetLink = $"boltcard://reset?url={GetBoltcardDeeplinkUrl(pp.Id, OnExistingBehavior.KeepVersion)}"
|
||||||
};
|
};
|
||||||
foreach (var payout in payouts)
|
foreach (var payout in payouts)
|
||||||
{
|
{
|
||||||
|
@ -107,5 +110,17 @@ namespace BTCPayServer.Plugins.BoltcardBalance.Controllers
|
||||||
|
|
||||||
return View($"{BoltcardBalancePlugin.ViewsDirectory}/BalanceView.cshtml", vm);
|
return View($"{BoltcardBalancePlugin.ViewsDirectory}/BalanceView.cshtml", vm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string GetBoltcardDeeplinkUrl(string ppId, OnExistingBehavior onExisting)
|
||||||
|
{
|
||||||
|
var registerUrl = Url.Action(nameof(GreenfieldPullPaymentController.RegisterBoltcard), "GreenfieldPullPayment",
|
||||||
|
new
|
||||||
|
{
|
||||||
|
pullPaymentId = ppId,
|
||||||
|
onExisting = onExisting.ToString()
|
||||||
|
}, Request.Scheme, Request.Host.ToString());
|
||||||
|
registerUrl = Uri.EscapeDataString(registerUrl);
|
||||||
|
return registerUrl;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,7 @@ namespace BTCPayServer.Plugins.BoltcardBalance.ViewModels
|
||||||
public decimal AmountDue { get; set; }
|
public decimal AmountDue { get; set; }
|
||||||
public List<Transaction> Transactions { get; set; } = new List<Transaction>();
|
public List<Transaction> Transactions { get; set; } = new List<Transaction>();
|
||||||
public string LNUrlBech32 { get; set; }
|
public string LNUrlBech32 { get; set; }
|
||||||
|
public string BoltcardKeysResetLink { get; set; }
|
||||||
public string LNUrlPay { get; set; }
|
public string LNUrlPay { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,6 +16,9 @@
|
||||||
<button type="button" class="btn btn-secondary only-for-js mt-4" id="lnurlwithdraw-button">
|
<button type="button" class="btn btn-secondary only-for-js mt-4" id="lnurlwithdraw-button">
|
||||||
<span class="fa fa-qrcode fa-2x" title="Deposit"></span>
|
<span class="fa fa-qrcode fa-2x" title="Deposit"></span>
|
||||||
</button>
|
</button>
|
||||||
|
<button type="button" class="btn btn-outline-danger only-for-js mt-4" id="reset-button">
|
||||||
|
<span>Reset Boltcard</span>
|
||||||
|
</button>
|
||||||
<a href="#" id="CancelWizard" class="cancel mt-4">
|
<a href="#" id="CancelWizard" class="cancel mt-4">
|
||||||
<vc:icon symbol="close" />
|
<vc:icon symbol="close" />
|
||||||
</a>
|
</a>
|
||||||
|
@ -28,16 +31,13 @@
|
||||||
<dt class="h4 fw-semibold text-nowrap text-primary text-print-default order-2 order-sm-1 mb-1">@DisplayFormatter.Currency(Model.AmountDue, Model.Currency)</dt>
|
<dt class="h4 fw-semibold text-nowrap text-primary text-print-default order-2 order-sm-1 mb-1">@DisplayFormatter.Currency(Model.AmountDue, Model.Currency)</dt>
|
||||||
</div>
|
</div>
|
||||||
</dl>
|
</dl>
|
||||||
@* <div class="lnurl-pay d-none">
|
<div class="lnurl-pay boltcard-details d-none">
|
||||||
<vc:qr-code data="@Model.LNUrlPay" />
|
|
||||||
</div>
|
|
||||||
<div class="lnurl-pay d-flex gap-3 mt-3 mt-sm-0 d-none">
|
|
||||||
<a class="btn btn-primary" target="_blank" href="@Model.LNUrlPay">Deposit from Wallet... (LNURLPay)</a>
|
|
||||||
</div> *@
|
|
||||||
<div class="lnurl-pay d-none">
|
|
||||||
<vc:qr-code data="@Model.LNUrlBech32" />
|
<vc:qr-code data="@Model.LNUrlBech32" />
|
||||||
</div>
|
</div>
|
||||||
<div class="lnurl-pay d-flex gap-3 mt-3 mt-sm-0 d-none">
|
<div class="boltcard-reset boltcard-details d-flex gap-3 mt-3 mt-sm-0 d-none">
|
||||||
|
<a class="btn btn-outline-danger" target="_blank" href="@Model.BoltcardKeysResetLink">Reset Boltcard from app</a>
|
||||||
|
</div>
|
||||||
|
<div class="lnurl-pay boltcard-details d-flex gap-3 mt-3 mt-sm-0 d-none">
|
||||||
<a class="btn btn-primary" target="_blank" href="@Model.LNUrlBech32">Deposit from Wallet...</a>
|
<a class="btn btn-primary" target="_blank" href="@Model.LNUrlBech32">Deposit from Wallet...</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -63,6 +63,22 @@
|
||||||
document.getElementById("error").classList.add("d-none");
|
document.getElementById("error").classList.add("d-none");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
function toggleDetails(className)
|
||||||
|
{
|
||||||
|
var el = document.getElementsByClassName("boltcard-details");
|
||||||
|
for (var i = 0; i < el.length; i++) {
|
||||||
|
if (el[i].classList.contains(className)) {
|
||||||
|
if (el[i].classList.contains("d-none"))
|
||||||
|
el[i].classList.remove("d-none");
|
||||||
|
else
|
||||||
|
el[i].classList.add("d-none");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
el[i].classList.add("d-none");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function delay(ms) {
|
function delay(ms) {
|
||||||
return new Promise(resolve => setTimeout(resolve, ms));
|
return new Promise(resolve => setTimeout(resolve, ms));
|
||||||
|
@ -86,13 +102,10 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
document.getElementById("lnurlwithdraw-button").addEventListener("click", function (e) {
|
document.getElementById("lnurlwithdraw-button").addEventListener("click", function (e) {
|
||||||
var el = document.getElementsByClassName("lnurl-pay");
|
toggleDetails('lnurl-pay');
|
||||||
for (var i = 0; i < el.length; i++) {
|
});
|
||||||
if (el[i].classList.contains("d-none"))
|
document.getElementById("reset-button").addEventListener("click", function (e) {
|
||||||
el[i].classList.remove("d-none");
|
toggleDetails('boltcard-reset');
|
||||||
else
|
|
||||||
el[i].classList.add("d-none");
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
await uiDelay;
|
await uiDelay;
|
||||||
setState("ShowBalance");
|
setState("ShowBalance");
|
||||||
|
|
Loading…
Add table
Reference in a new issue