mirror of
https://github.com/aljazceru/btcpayserver.git
synced 2025-12-17 22:14:26 +01:00
Cleanup AvailableCrypto from the model
This commit is contained in:
@@ -726,7 +726,7 @@ namespace BTCPayServer.Controllers
|
|||||||
bool isDefaultPaymentId = false;
|
bool isDefaultPaymentId = false;
|
||||||
var storeBlob = store.GetStoreBlob();
|
var storeBlob = store.GetStoreBlob();
|
||||||
|
|
||||||
var displayedPaymentMethods = invoice.GetPaymentPrompts().Select(p => p.PaymentMethodId).ToList();
|
var displayedPaymentMethods = invoice.GetPaymentPrompts().Select(p => p.PaymentMethodId).ToHashSet();
|
||||||
|
|
||||||
|
|
||||||
var btcId = PaymentTypes.CHAIN.GetPaymentMethodId("BTC");
|
var btcId = PaymentTypes.CHAIN.GetPaymentMethodId("BTC");
|
||||||
@@ -916,33 +916,21 @@ namespace BTCPayServer.Controllers
|
|||||||
var handler = _handlers[kv.PaymentMethodId];
|
var handler = _handlers[kv.PaymentMethodId];
|
||||||
return new PaymentModel.AvailableCrypto
|
return new PaymentModel.AvailableCrypto
|
||||||
{
|
{
|
||||||
Handler = handler,
|
|
||||||
Displayed = displayedPaymentMethods.Contains(kv.PaymentMethodId),
|
Displayed = displayedPaymentMethods.Contains(kv.PaymentMethodId),
|
||||||
PaymentMethodId = kv.PaymentMethodId,
|
PaymentMethodId = kv.PaymentMethodId,
|
||||||
CryptoCode = kv.Currency,
|
Order = kv.PaymentMethodId switch
|
||||||
PaymentMethodName = _prettyName.PrettyName(kv.PaymentMethodId),
|
{
|
||||||
IsLightning = handler is ILightningPaymentHandler,
|
_ when PaymentTypes.CHAIN.GetPaymentMethodId(_NetworkProvider.DefaultNetwork.CryptoCode) == kv.PaymentMethodId => 0,
|
||||||
CryptoImage = Request.GetRelativePathOrAbsolute(GetPaymentMethodImage(kv.PaymentMethodId)),
|
_ when PaymentTypes.LN.GetPaymentMethodId(_NetworkProvider.DefaultNetwork.CryptoCode) == kv.PaymentMethodId => 1,
|
||||||
Link = Url.Action(nameof(Checkout),
|
_ when handler is ILightningPaymentHandler => 2,
|
||||||
new
|
_ => 3
|
||||||
{
|
}
|
||||||
invoiceId,
|
|
||||||
paymentMethodId = kv.PaymentMethodId.ToString()
|
|
||||||
})
|
|
||||||
};
|
};
|
||||||
}).Where(c => c.CryptoImage != "/")
|
})
|
||||||
.OrderByDescending(a => a.CryptoCode == _NetworkProvider.DefaultNetwork.CryptoCode).ThenBy(a => a.PaymentMethodName).ThenBy(a => a.IsLightning ? 1 : 0)
|
.OrderBy(a => a.Order)
|
||||||
.ToList()
|
.ToList()
|
||||||
};
|
};
|
||||||
|
|
||||||
foreach (var kv in invoice.GetPaymentPrompts())
|
|
||||||
{
|
|
||||||
if (_paymentModelExtensions.TryGetValue(kv.PaymentMethodId, out var extension) &&
|
|
||||||
_handlers.TryGetValue(kv.PaymentMethodId, out var h))
|
|
||||||
{
|
|
||||||
extension.ModifyPaymentModel(new PaymentModelContext(model, store, storeBlob, invoice, Url, kv, h, paymentMethodId == kv.PaymentMethodId));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
model.PaymentMethodId = paymentMethodId.ToString();
|
model.PaymentMethodId = paymentMethodId.ToString();
|
||||||
model.OrderAmountFiat = OrderAmountFromInvoice(model.CryptoCode, invoice, DisplayFormatter.CurrencyFormat.Symbol);
|
model.OrderAmountFiat = OrderAmountFromInvoice(model.CryptoCode, invoice, DisplayFormatter.CurrencyFormat.Symbol);
|
||||||
|
|
||||||
@@ -957,6 +945,12 @@ namespace BTCPayServer.Controllers
|
|||||||
|
|
||||||
var expiration = TimeSpan.FromSeconds(model.ExpirationSeconds);
|
var expiration = TimeSpan.FromSeconds(model.ExpirationSeconds);
|
||||||
model.TimeLeft = expiration.PrettyPrint();
|
model.TimeLeft = expiration.PrettyPrint();
|
||||||
|
|
||||||
|
if (_paymentModelExtensions.TryGetValue(paymentMethodId, out var extension) &&
|
||||||
|
_handlers.TryGetValue(paymentMethodId, out var h))
|
||||||
|
{
|
||||||
|
extension.ModifyPaymentModel(new PaymentModelContext(model, store, storeBlob, invoice, Url, prompt, h));
|
||||||
|
}
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,15 +14,8 @@ namespace BTCPayServer.Models.InvoicingModels
|
|||||||
{
|
{
|
||||||
[JsonConverter(typeof(PaymentMethodIdJsonConverter))]
|
[JsonConverter(typeof(PaymentMethodIdJsonConverter))]
|
||||||
public PaymentMethodId PaymentMethodId { get; set; }
|
public PaymentMethodId PaymentMethodId { get; set; }
|
||||||
public string CryptoImage { get; set; }
|
|
||||||
public string Link { get; set; }
|
|
||||||
public string PaymentMethodName { get; set; }
|
|
||||||
public bool IsLightning { get; set; }
|
|
||||||
public string CryptoCode { get; set; }
|
|
||||||
public bool Displayed { get; set; }
|
public bool Displayed { get; set; }
|
||||||
[JsonIgnore]
|
public string Order { get; set; }
|
||||||
public IPaymentMethodHandler Handler { get; internal set; }
|
|
||||||
|
|
||||||
[JsonExtensionData]
|
[JsonExtensionData]
|
||||||
public Dictionary<string, JToken> AdditionalData { get; set; } = new();
|
public Dictionary<string, JToken> AdditionalData { get; set; } = new();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ namespace BTCPayServer.Payments.Bitcoin
|
|||||||
public PaymentMethodId PaymentMethodId { get; }
|
public PaymentMethodId PaymentMethodId { get; }
|
||||||
public void ModifyPaymentModel(PaymentModelContext context)
|
public void ModifyPaymentModel(PaymentModelContext context)
|
||||||
{
|
{
|
||||||
if (context is not { IsSelected: true, Handler: BitcoinLikePaymentHandler handler})
|
if (context is not { Handler: BitcoinLikePaymentHandler handler})
|
||||||
return;
|
return;
|
||||||
var prompt = context.Prompt;
|
var prompt = context.Prompt;
|
||||||
var details = handler.ParsePaymentPromptDetails(prompt.Details);
|
var details = handler.ParsePaymentPromptDetails(prompt.Details);
|
||||||
|
|||||||
@@ -11,8 +11,7 @@ namespace BTCPayServer.Payments
|
|||||||
InvoiceEntity InvoiceEntity,
|
InvoiceEntity InvoiceEntity,
|
||||||
IUrlHelper UrlHelper,
|
IUrlHelper UrlHelper,
|
||||||
PaymentPrompt Prompt,
|
PaymentPrompt Prompt,
|
||||||
IPaymentMethodHandler Handler,
|
IPaymentMethodHandler Handler);
|
||||||
bool IsSelected);
|
|
||||||
public interface IPaymentModelExtension
|
public interface IPaymentModelExtension
|
||||||
{
|
{
|
||||||
public PaymentMethodId PaymentMethodId { get; }
|
public PaymentMethodId PaymentMethodId { get; }
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ namespace BTCPayServer.Payments.LNURLPay
|
|||||||
private const string UriScheme = "lightning:";
|
private const string UriScheme = "lightning:";
|
||||||
public void ModifyPaymentModel(PaymentModelContext context)
|
public void ModifyPaymentModel(PaymentModelContext context)
|
||||||
{
|
{
|
||||||
if (context is not { IsSelected: true, Handler: LNURLPayPaymentHandler handler })
|
if (context is not { Handler: LNURLPayPaymentHandler handler })
|
||||||
return;
|
return;
|
||||||
var lnurl = paymentLinkExtension.GetPaymentLink(context.Prompt, context.UrlHelper);
|
var lnurl = paymentLinkExtension.GetPaymentLink(context.Prompt, context.UrlHelper);
|
||||||
if (lnurl is not null)
|
if (lnurl is not null)
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ namespace BTCPayServer.Payments.Lightning
|
|||||||
public string Badge => "⚡";
|
public string Badge => "⚡";
|
||||||
public void ModifyPaymentModel(PaymentModelContext context)
|
public void ModifyPaymentModel(PaymentModelContext context)
|
||||||
{
|
{
|
||||||
if (context is not { IsSelected: true, Handler: LightningLikePaymentHandler handler })
|
if (context is not { Handler: LightningLikePaymentHandler handler })
|
||||||
return;
|
return;
|
||||||
var paymentPrompt = context.InvoiceEntity.GetPaymentPrompt(PaymentMethodId);
|
var paymentPrompt = context.InvoiceEntity.GetPaymentPrompt(PaymentMethodId);
|
||||||
if (paymentPrompt is null)
|
if (paymentPrompt is null)
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ namespace BTCPayServer.Services.Altcoins.Monero.Payments
|
|||||||
|
|
||||||
public void ModifyPaymentModel(PaymentModelContext context)
|
public void ModifyPaymentModel(PaymentModelContext context)
|
||||||
{
|
{
|
||||||
if (context is not { IsSelected: true, Handler: MoneroLikePaymentMethodHandler handler })
|
if (context is not { Handler: MoneroLikePaymentMethodHandler handler })
|
||||||
return;
|
return;
|
||||||
context.Model.CheckoutBodyComponentName = BitcoinPaymentModelExtension.CheckoutBodyComponentName;
|
context.Model.CheckoutBodyComponentName = BitcoinPaymentModelExtension.CheckoutBodyComponentName;
|
||||||
if (context.Model.Activated)
|
if (context.Model.Activated)
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ namespace BTCPayServer.Services.Altcoins.Zcash.Payments
|
|||||||
|
|
||||||
public void ModifyPaymentModel(PaymentModelContext context)
|
public void ModifyPaymentModel(PaymentModelContext context)
|
||||||
{
|
{
|
||||||
if (context is not { IsSelected: true, Handler: ZcashLikePaymentMethodHandler handler })
|
if (context is not { Handler: ZcashLikePaymentMethodHandler handler })
|
||||||
return;
|
return;
|
||||||
context.Model.CheckoutBodyComponentName = BitcoinPaymentModelExtension.CheckoutBodyComponentName;
|
context.Model.CheckoutBodyComponentName = BitcoinPaymentModelExtension.CheckoutBodyComponentName;
|
||||||
if (context.Model.Activated)
|
if (context.Model.Activated)
|
||||||
|
|||||||
Reference in New Issue
Block a user