From b97e083017eabdfcd9b0a6d12be4a8e44fa4ed22 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Tue, 4 Jun 2019 09:22:46 +0900 Subject: [PATCH] Refactor: Move DeserializePaymentMethodDetails to PaymentType --- BTCPayServer/Payments/PaymentTypes.Bitcoin.cs | 9 +++++++-- BTCPayServer/Payments/PaymentTypes.Lightning.cs | 9 +++++++-- BTCPayServer/Payments/PaymentTypes.cs | 3 ++- BTCPayServer/Services/Invoices/InvoiceEntity.cs | 10 +--------- 4 files changed, 17 insertions(+), 14 deletions(-) diff --git a/BTCPayServer/Payments/PaymentTypes.Bitcoin.cs b/BTCPayServer/Payments/PaymentTypes.Bitcoin.cs index df0c192c3..18d257247 100644 --- a/BTCPayServer/Payments/PaymentTypes.Bitcoin.cs +++ b/BTCPayServer/Payments/PaymentTypes.Bitcoin.cs @@ -19,9 +19,14 @@ namespace BTCPayServer.Payments public override string ToPrettyString() => "On-Chain"; public override string GetId() => "BTCLike"; - public override CryptoPaymentData DeserializePaymentData(string cryptoPaymentData) + public override CryptoPaymentData DeserializePaymentData(string str) { - return JsonConvert.DeserializeObject(cryptoPaymentData); + return JsonConvert.DeserializeObject(str); + } + + public override IPaymentMethodDetails DeserializePaymentMethodDetails(string str) + { + return JsonConvert.DeserializeObject(str); } } } diff --git a/BTCPayServer/Payments/PaymentTypes.Lightning.cs b/BTCPayServer/Payments/PaymentTypes.Lightning.cs index b91c9402e..894e2f1c9 100644 --- a/BTCPayServer/Payments/PaymentTypes.Lightning.cs +++ b/BTCPayServer/Payments/PaymentTypes.Lightning.cs @@ -18,9 +18,14 @@ namespace BTCPayServer.Payments public override string ToPrettyString() => "Off-Chain"; public override string GetId() => "LightningLike"; - public override CryptoPaymentData DeserializePaymentData(string cryptoPaymentData) + public override CryptoPaymentData DeserializePaymentData(string str) { - return JsonConvert.DeserializeObject(cryptoPaymentData); + return JsonConvert.DeserializeObject(str); + } + + public override IPaymentMethodDetails DeserializePaymentMethodDetails(string str) + { + return JsonConvert.DeserializeObject(str); } } } diff --git a/BTCPayServer/Payments/PaymentTypes.cs b/BTCPayServer/Payments/PaymentTypes.cs index 487611747..635f0574a 100644 --- a/BTCPayServer/Payments/PaymentTypes.cs +++ b/BTCPayServer/Payments/PaymentTypes.cs @@ -55,6 +55,7 @@ namespace BTCPayServer.Payments } public abstract string GetId(); - public abstract CryptoPaymentData DeserializePaymentData(string cryptoPaymentData); + public abstract CryptoPaymentData DeserializePaymentData(string str); + public abstract IPaymentMethodDetails DeserializePaymentMethodDetails(string str); } } diff --git a/BTCPayServer/Services/Invoices/InvoiceEntity.cs b/BTCPayServer/Services/Invoices/InvoiceEntity.cs index 9ab7649c7..2ae7c840d 100644 --- a/BTCPayServer/Services/Invoices/InvoiceEntity.cs +++ b/BTCPayServer/Services/Invoices/InvoiceEntity.cs @@ -756,15 +756,7 @@ namespace BTCPayServer.Services.Invoices else { var paymentType = GetId().PaymentType; - IPaymentMethodDetails details = null; - if (paymentType == PaymentTypes.BTCLike) - { - details = JsonConvert.DeserializeObject(PaymentMethodDetails.ToString()); - } - else - { - details = JsonConvert.DeserializeObject(PaymentMethodDetails.ToString()); - } + IPaymentMethodDetails details = paymentType.DeserializePaymentMethodDetails(PaymentMethodDetails.ToString()); if (details is Payments.Bitcoin.BitcoinLikeOnChainPaymentMethod btcLike) { btcLike.NextNetworkFee = NextNetworkFee;