Refactor: Remove BlockExplorerLink from the payment handler

This commit is contained in:
nicolas.dorier
2019-06-04 09:52:06 +09:00
parent 292c188182
commit 796954c6e3
5 changed files with 14 additions and 21 deletions

View File

@@ -106,9 +106,14 @@ namespace BTCPayServer
{ {
return _Networks.ContainsKey(cryptoCode.ToUpperInvariant()); return _Networks.ContainsKey(cryptoCode.ToUpperInvariant());
} }
public BTCPayNetworkBase GetNetwork(string cryptoCode)
{
return GetNetwork<BTCPayNetworkBase>(cryptoCode);
}
public T GetNetwork<T>(string cryptoCode) where T: BTCPayNetworkBase public T GetNetwork<T>(string cryptoCode) where T: BTCPayNetworkBase
{ {
if (cryptoCode == null)
throw new ArgumentNullException(nameof(cryptoCode));
if(!_Networks.TryGetValue(cryptoCode.ToUpperInvariant(), out BTCPayNetworkBase network)) if(!_Networks.TryGetValue(cryptoCode.ToUpperInvariant(), out BTCPayNetworkBase network))
{ {
if (cryptoCode == "XBT") if (cryptoCode == "XBT")

View File

@@ -110,11 +110,11 @@ namespace BTCPayServer.PaymentRequest
var paymentMethodId = paymentEntity.GetPaymentMethodId(); var paymentMethodId = paymentEntity.GetPaymentMethodId();
string txId = paymentData.GetPaymentId(); string txId = paymentData.GetPaymentId();
string link = paymentEntity.PaymentMethodHandlerDictionary[paymentMethodId].GetTransactionLink(paymentMethodId, txId); string link = GetTransactionLink(paymentMethodId, txId);
return new ViewPaymentRequestViewModel.PaymentRequestInvoicePayment() return new ViewPaymentRequestViewModel.PaymentRequestInvoicePayment()
{ {
Amount = paymentData.GetValue(), Amount = paymentData.GetValue(),
PaymentMethod = paymentEntity.GetPaymentMethodId().ToString(), PaymentMethod = paymentMethodId.ToString(),
Link = link, Link = link,
Id = txId Id = txId
}; };
@@ -122,5 +122,11 @@ namespace BTCPayServer.PaymentRequest
}).ToList() }).ToList()
}; };
} }
private string GetTransactionLink(PaymentMethodId paymentMethodId, string txId)
{
var network = _BtcPayNetworkProvider.GetNetwork(paymentMethodId.CryptoCode);
return string.Format(CultureInfo.InvariantCulture, network.BlockExplorerLink, txId);
}
} }
} }

View File

@@ -104,14 +104,6 @@ namespace BTCPayServer.Payments.Bitcoin
return network.DisplayName; return network.DisplayName;
} }
public override string GetTransactionLink(PaymentMethodId paymentMethodId, params object[] args)
{
var network = _networkProvider.GetNetwork<BTCPayNetwork>(paymentMethodId.CryptoCode);
return string.Format(CultureInfo.InvariantCulture, network.BlockExplorerLink, args);
}
public override object PreparePayment(DerivationSchemeSettings supportedPaymentMethod, StoreData store, public override object PreparePayment(DerivationSchemeSettings supportedPaymentMethod, StoreData store,
BTCPayNetworkBase network) BTCPayNetworkBase network)
{ {

View File

@@ -53,8 +53,6 @@ namespace BTCPayServer.Payments
Money amount, PaymentMethodId paymentMethodId); Money amount, PaymentMethodId paymentMethodId);
IEnumerable<PaymentMethodId> GetSupportedPaymentMethods(); IEnumerable<PaymentMethodId> GetSupportedPaymentMethods();
string GetTransactionLink(PaymentMethodId paymentMethodId, params object[] args);
} }
public interface IPaymentMethodHandler<TSupportedPaymentMethod, TBTCPayNetwork> : IPaymentMethodHandler public interface IPaymentMethodHandler<TSupportedPaymentMethod, TBTCPayNetwork> : IPaymentMethodHandler
@@ -88,9 +86,6 @@ namespace BTCPayServer.Payments
public abstract IEnumerable<PaymentMethodId> GetSupportedPaymentMethods(); public abstract IEnumerable<PaymentMethodId> GetSupportedPaymentMethods();
public abstract string GetTransactionLink(PaymentMethodId paymentMethodId, params object[] args);
public virtual object PreparePayment(TSupportedPaymentMethod supportedPaymentMethod, StoreData store, public virtual object PreparePayment(TSupportedPaymentMethod supportedPaymentMethod, StoreData store,
BTCPayNetworkBase network) BTCPayNetworkBase network)
{ {

View File

@@ -167,11 +167,6 @@ namespace BTCPayServer.Payments.Lightning
} }
return "The amount of the invoice is too high to be paid with lightning"; return "The amount of the invoice is too high to be paid with lightning";
} }
public override string GetTransactionLink(PaymentMethodId paymentMethodId, params object[] args)
{
return null;
}
public override void PrepareInvoiceDto(InvoiceResponse invoiceResponse, InvoiceEntity invoiceEntity, public override void PrepareInvoiceDto(InvoiceResponse invoiceResponse, InvoiceEntity invoiceEntity,
InvoiceCryptoInfo invoiceCryptoInfo, PaymentMethodAccounting accounting, PaymentMethod info) InvoiceCryptoInfo invoiceCryptoInfo, PaymentMethodAccounting accounting, PaymentMethod info)