mirror of
https://github.com/aljazceru/btcpayserver.git
synced 2025-12-18 06:24:24 +01:00
make IsAvailable async
This commit is contained in:
@@ -83,12 +83,23 @@ namespace BTCPayServer.Controllers
|
|||||||
.Select(c =>
|
.Select(c =>
|
||||||
(Handler: (IPaymentMethodHandler)_ServiceProvider.GetService(typeof(IPaymentMethodHandler<>).MakeGenericType(c.GetType())),
|
(Handler: (IPaymentMethodHandler)_ServiceProvider.GetService(typeof(IPaymentMethodHandler<>).MakeGenericType(c.GetType())),
|
||||||
SupportedPaymentMethod: c,
|
SupportedPaymentMethod: c,
|
||||||
Network: _NetworkProvider.GetNetwork(c.PaymentId.CryptoCode)))
|
Network: _NetworkProvider.GetNetwork(c.PaymentId.CryptoCode),
|
||||||
.Where(c =>
|
IsAvailable: Task.FromResult(false)))
|
||||||
c.Network != null &&
|
.Where(c => c.Network != null)
|
||||||
c.Handler.IsAvailable(c.SupportedPaymentMethod, c.Network))
|
.Select(c =>
|
||||||
.ToArray();
|
{
|
||||||
if (supportedPaymentMethods.Length == 0)
|
c.IsAvailable = c.Handler.IsAvailable(c.SupportedPaymentMethod, c.Network);
|
||||||
|
return c;
|
||||||
|
})
|
||||||
|
.ToList();
|
||||||
|
foreach(var supportedPaymentMethod in supportedPaymentMethods.ToList())
|
||||||
|
{
|
||||||
|
if(!await supportedPaymentMethod.IsAvailable)
|
||||||
|
{
|
||||||
|
supportedPaymentMethods.Remove(supportedPaymentMethod);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (supportedPaymentMethods.Count == 0)
|
||||||
throw new BitpayHttpException(400, "No derivation strategy are available now for this store");
|
throw new BitpayHttpException(400, "No derivation strategy are available now for this store");
|
||||||
var entity = new InvoiceEntity
|
var entity = new InvoiceEntity
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -38,9 +38,9 @@ namespace BTCPayServer.Payments.Bitcoin
|
|||||||
return onchainMethod;
|
return onchainMethod;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool IsAvailable(DerivationStrategy supportedPaymentMethod, BTCPayNetwork network)
|
public override Task<bool> IsAvailable(DerivationStrategy supportedPaymentMethod, BTCPayNetwork network)
|
||||||
{
|
{
|
||||||
return _ExplorerProvider.IsAvailable(network);
|
return Task.FromResult(_ExplorerProvider.IsAvailable(network));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ namespace BTCPayServer.Payments
|
|||||||
/// <param name="supportedPaymentMethod"></param>
|
/// <param name="supportedPaymentMethod"></param>
|
||||||
/// <param name="network"></param>
|
/// <param name="network"></param>
|
||||||
/// <returns>true if this payment method is available</returns>
|
/// <returns>true if this payment method is available</returns>
|
||||||
bool IsAvailable(ISupportedPaymentMethod supportedPaymentMethod, BTCPayNetwork network);
|
Task<bool> IsAvailable(ISupportedPaymentMethod supportedPaymentMethod, BTCPayNetwork network);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Create needed to track payments of this invoice
|
/// Create needed to track payments of this invoice
|
||||||
@@ -31,7 +31,7 @@ namespace BTCPayServer.Payments
|
|||||||
|
|
||||||
public interface IPaymentMethodHandler<T> : IPaymentMethodHandler where T : ISupportedPaymentMethod
|
public interface IPaymentMethodHandler<T> : IPaymentMethodHandler where T : ISupportedPaymentMethod
|
||||||
{
|
{
|
||||||
bool IsAvailable(T supportedPaymentMethod, BTCPayNetwork network);
|
Task<bool> IsAvailable(T supportedPaymentMethod, BTCPayNetwork network);
|
||||||
Task<IPaymentMethodDetails> CreatePaymentMethodDetails(T supportedPaymentMethod, PaymentMethod paymentMethod, BTCPayNetwork network);
|
Task<IPaymentMethodDetails> CreatePaymentMethodDetails(T supportedPaymentMethod, PaymentMethod paymentMethod, BTCPayNetwork network);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -48,15 +48,15 @@ namespace BTCPayServer.Payments
|
|||||||
throw new NotSupportedException("Invalid supportedPaymentMethod");
|
throw new NotSupportedException("Invalid supportedPaymentMethod");
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract bool IsAvailable(T supportedPaymentMethod, BTCPayNetwork network);
|
public abstract Task<bool> IsAvailable(T supportedPaymentMethod, BTCPayNetwork network);
|
||||||
|
|
||||||
bool IPaymentMethodHandler.IsAvailable(ISupportedPaymentMethod supportedPaymentMethod, BTCPayNetwork network)
|
Task<bool> IPaymentMethodHandler.IsAvailable(ISupportedPaymentMethod supportedPaymentMethod, BTCPayNetwork network)
|
||||||
{
|
{
|
||||||
if(supportedPaymentMethod is T method)
|
if(supportedPaymentMethod is T method)
|
||||||
{
|
{
|
||||||
return IsAvailable(method, network);
|
return IsAvailable(method, network);
|
||||||
}
|
}
|
||||||
return false;
|
return Task.FromResult(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user