Add setup links for LN URL integration (#3046)

This commit is contained in:
Umar Bolatov
2021-11-10 01:50:39 -08:00
committed by GitHub
parent d5b25dde3d
commit 193b209c92
5 changed files with 77 additions and 8 deletions

View File

@@ -5,8 +5,10 @@ using System.Linq;
using System.Text;
using BTCPayServer.Payments;
using BTCPayServer.Services.Rates;
using NBitcoin;
using NBXplorer;
using Newtonsoft.Json.Linq;
using BTCPayServer.Payments.Lightning;
namespace BTCPayServer.Data
{
@@ -146,5 +148,49 @@ namespace BTCPayServer.Data
storeData.DerivationStrategies = strategies.ToString();
#pragma warning restore CS0618
}
public static bool IsLightningEnabled(this StoreData storeData, BTCPayNetworkProvider networks)
{
var paymentMethods = storeData.GetSupportedPaymentMethods(networks);
var lightningByCryptoCode = paymentMethods
.OfType<LightningSupportedPaymentMethod>()
.Where(method => method.PaymentId.PaymentType == LightningPaymentType.Instance)
.ToDictionary(c => c.CryptoCode.ToUpperInvariant());
var excludeFilters = storeData.GetStoreBlob().GetExcludedPaymentMethods();
var isLightningEnabled = false;
foreach (var paymentMethod in paymentMethods)
{
var paymentMethodId = paymentMethod.PaymentId;
switch (paymentMethodId.PaymentType)
{
// LNURLPayPaymentType is a subclass of LightningPaymentType, skip it
case LNURLPayPaymentType lnurlPayPaymentType:
break;
case LightningPaymentType _:
var lightning = lightningByCryptoCode.TryGet(paymentMethodId.CryptoCode);
isLightningEnabled = !excludeFilters.Match(paymentMethodId) && lightning != null;
break;
}
}
return isLightningEnabled;
}
public static bool IsLNUrlEnabled(this StoreData storeData, BTCPayNetworkProvider networks)
{
var paymentMethods = storeData.GetSupportedPaymentMethods(networks);
var excludeFilters = storeData.GetStoreBlob().GetExcludedPaymentMethods();
var isLNUrlEnabled = false;
foreach (var paymentMethod in paymentMethods)
{
var paymentMethodId = paymentMethod.PaymentId;
if (paymentMethodId.PaymentType is LNURLPayPaymentType)
{
isLNUrlEnabled = !excludeFilters.Match(paymentMethodId);
}
}
return isLNUrlEnabled;
}
}
}