Code cleanups

This commit is contained in:
Dennis Reimann 2024-04-04 10:58:47 +02:00
parent df4d370524
commit c7a8523b77
No known key found for this signature in database
GPG key ID: 5009E1797F03F8D0
10 changed files with 56 additions and 67 deletions

View file

@ -121,15 +121,15 @@ namespace BTCPayServer.Controllers
var derivationByCryptoCode =
store
.GetPaymentMethodConfigs<DerivationSchemeSettings>(_handlers)
.ToDictionary(c => ((IHasNetwork)_handlers[c.Key]).Network.CryptoCode, c => (DerivationSchemeSettings)c.Value);
.ToDictionary(c => ((IHasNetwork)_handlers[c.Key]).Network.CryptoCode, c => c.Value);
var lightningByCryptoCode = store
.GetPaymentMethodConfigs(_handlers)
.Where(c => c.Value is LightningPaymentMethodConfig)
.ToDictionary(c => ((IHasNetwork)_handlers[c.Key]).Network.CryptoCode, c => (LightningPaymentMethodConfig)c.Value);
derivationSchemes = new List<StoreDerivationScheme>();
lightningNodes = new List<StoreLightningNode>();
derivationSchemes = [];
lightningNodes = [];
foreach (var handler in _handlers)
{

View file

@ -48,7 +48,7 @@ namespace BTCPayServer.Controllers
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
public async Task<IActionResult> StoreEmails(string storeId, StoreEmailRuleViewModel vm, string command)
{
vm.Rules ??= new List<StoreEmailRule>();
vm.Rules ??= [];
int commandIndex = 0;
var indSep = command.Split(':', StringSplitOptions.RemoveEmptyEntries);
@ -72,8 +72,8 @@ namespace BTCPayServer.Controllers
{
var rule = vm.Rules[i];
if (!string.IsNullOrEmpty(rule.To) && (rule.To.Split(',', StringSplitOptions.RemoveEmptyEntries)
.Any(s => !MailboxAddressValidator.TryParse(s, out _))))
if (!string.IsNullOrEmpty(rule.To) && rule.To.Split(',', StringSplitOptions.RemoveEmptyEntries)
.Any(s => !MailboxAddressValidator.TryParse(s, out _)))
{
ModelState.AddModelError($"{nameof(vm.Rules)}[{i}].{nameof(rule.To)}",
"Invalid mailbox address provided. Valid formats are: 'test@example.com' or 'Firstname Lastname <test@example.com>'");

View file

@ -26,7 +26,7 @@ namespace BTCPayServer.Controllers
public async Task<IActionResult> Webhooks()
{
var webhooks = await _storeRepo.GetWebhooks(CurrentStore.Id);
return View(nameof(Webhooks), new WebhooksViewModel()
return View(nameof(Webhooks), new WebhooksViewModel
{
Webhooks = webhooks.Select(async w =>
{
@ -146,11 +146,11 @@ namespace BTCPayServer.Controllers
if (result.Success)
{
TempData[WellKnownTempData.SuccessMessage] = $"{viewModel.Type.ToString()} event delivered successfully! Delivery ID is {result.DeliveryId}";
TempData[WellKnownTempData.SuccessMessage] = $"{viewModel.Type} event delivered successfully! Delivery ID is {result.DeliveryId}";
}
else
{
TempData[WellKnownTempData.ErrorMessage] = $"{viewModel.Type.ToString()} event could not be delivered. Error message received: {(result.ErrorMessage ?? "unknown")}";
TempData[WellKnownTempData.ErrorMessage] = $"{viewModel.Type} event could not be delivered. Error message received: {(result.ErrorMessage ?? "unknown")}";
}
return View(nameof(TestWebhook));

View file

@ -122,7 +122,7 @@ namespace BTCPayServer.Controllers
var paymentMethodId = PaymentTypes.LN.GetPaymentMethodId(network.CryptoCode);
LightningPaymentMethodConfig? paymentMethod = null;
LightningPaymentMethodConfig? paymentMethod;
if (vm.LightningNodeType == LightningNodeType.Internal)
{
paymentMethod = new LightningPaymentMethodConfig();
@ -135,8 +135,7 @@ namespace BTCPayServer.Controllers
ModelState.AddModelError(nameof(vm.ConnectionString), "Please provide a connection string");
return View(vm);
}
paymentMethod = new LightningPaymentMethodConfig();
paymentMethod.ConnectionString = vm.ConnectionString;
paymentMethod = new LightningPaymentMethodConfig { ConnectionString = vm.ConnectionString };
}
var handler = (LightningLikePaymentHandler)_handlers[paymentMethodId];
@ -153,7 +152,7 @@ namespace BTCPayServer.Controllers
case "save":
var lnurl = PaymentTypes.LNURL.GetPaymentMethodId(vm.CryptoCode);
store.SetPaymentMethodConfig(_handlers[paymentMethodId], paymentMethod);
store.SetPaymentMethodConfig(_handlers[lnurl], new LNURLPaymentMethodConfig()
store.SetPaymentMethodConfig(_handlers[lnurl], new LNURLPaymentMethodConfig
{
UseBech32Scheme = true,
LUD12Enabled = false
@ -293,10 +292,10 @@ namespace BTCPayServer.Controllers
if (store == null)
return NotFound();
if (cryptoCode == null)
var network = _explorerProvider.GetNetwork(cryptoCode);
if (network == null)
return NotFound();
var network = _explorerProvider.GetNetwork(cryptoCode);
var lightning = GetConfig<LightningPaymentMethodConfig>(PaymentTypes.LN.GetPaymentMethodId(cryptoCode), store);
if (lightning == null)
return NotFound();

View file

@ -103,7 +103,9 @@ namespace BTCPayServer.Controllers
}
catch
{
// ignored
}
if (fileContent is null || !_onChainWalletParsers.TryParseWalletFile(fileContent, network, out strategy, out _))
{
ModelState.AddModelError(nameof(vm.WalletFile), $"Import failed, make sure you import a compatible wallet format");
@ -430,7 +432,7 @@ namespace BTCPayServer.Controllers
.Select(e => new WalletSettingsAccountKeyViewModel
{
AccountKey = e.AccountKey.ToString(),
MasterFingerprint = e.RootFingerprint is HDFingerprint fp ? fp.ToString() : null,
MasterFingerprint = e.RootFingerprint is { } fp ? fp.ToString() : null,
AccountKeyPath = e.AccountKeyPath == null ? "" : $"m/{e.AccountKeyPath}"
}).ToList(),
Config = ProtectString(JToken.FromObject(derivation, handler.Serializer).ToString()),
@ -521,7 +523,7 @@ namespace BTCPayServer.Controllers
try
{
rootFingerprint = string.IsNullOrWhiteSpace(vm.AccountKeys[i].MasterFingerprint)
? (HDFingerprint?)null
? null
: new HDFingerprint(Encoders.Hex.DecodeData(vm.AccountKeys[i].MasterFingerprint));
if (rootFingerprint != null && derivation.AccountKeySettings[i].RootFingerprint != rootFingerprint)
@ -603,17 +605,16 @@ namespace BTCPayServer.Controllers
TempData[WellKnownTempData.SuccessMessage] = "Payment settings successfully updated";
if (payjoinChanged && blob.PayJoinEnabled && network.SupportPayJoin)
{
var config = store.GetPaymentMethodConfig<DerivationSchemeSettings>(PaymentTypes.CHAIN.GetPaymentMethodId(network.CryptoCode), _handlers);
if (!config.IsHotWallet)
if (config?.IsHotWallet is not true)
{
TempData.Remove(WellKnownTempData.SuccessMessage);
TempData.SetStatusMessageModel(new StatusMessageModel()
TempData.SetStatusMessageModel(new StatusMessageModel
{
Severity = StatusMessageModel.StatusSeverity.Warning,
Html = $"The payment settings were updated successfully. However, PayJoin will not work, as this isn't a <a href='https://docs.btcpayserver.org/HotWallet/' class='alert-link' target='_blank'>hot wallet</a>."
Html = "The payment settings were updated successfully. However, PayJoin will not work, as this isn't a <a href='https://docs.btcpayserver.org/HotWallet/' class='alert-link' target='_blank'>hot wallet</a>."
});
}
}
@ -798,7 +799,7 @@ namespace BTCPayServer.Controllers
private async Task<string> GetSeed(ExplorerClient client, DerivationSchemeSettings derivation)
{
return derivation.IsHotWallet &&
await client.GetMetadataAsync<string>(derivation.AccountDerivation, WellknownMetadataKeys.MasterHDKey) is string seed &&
await client.GetMetadataAsync<string>(derivation.AccountDerivation, WellknownMetadataKeys.MasterHDKey) is { } seed &&
!string.IsNullOrEmpty(seed) ? seed : null;
}

View file

@ -21,7 +21,7 @@ namespace BTCPayServer.Controllers
[HttpGet("{storeId}/rates")]
public IActionResult Rates()
{
var exchanges = GetSupportedExchanges();
var exchanges = GetSupportedExchanges().ToList();
var storeBlob = CurrentStore.GetStoreBlob();
var vm = new RatesViewModel();
vm.SetExchangeRates(exchanges, storeBlob.PreferredExchange ?? storeBlob.GetRecommendedExchange());
@ -43,13 +43,13 @@ namespace BTCPayServer.Controllers
{
return RedirectToAction(nameof(ShowRateRules), new { scripting = true, storeId = model.StoreId });
}
else if (command == "scripting-off")
if (command == "scripting-off")
{
return RedirectToAction(nameof(ShowRateRules), new { scripting = false, storeId = model.StoreId });
}
var exchanges = GetSupportedExchanges();
model.SetExchangeRates(exchanges, model.PreferredExchange ?? this.HttpContext.GetStoreData().GetStoreBlob().GetRecommendedExchange());
var exchanges = GetSupportedExchanges().ToList();
model.SetExchangeRates(exchanges, model.PreferredExchange ?? HttpContext.GetStoreData().GetStoreBlob().GetRecommendedExchange());
model.StoreId = storeId ?? model.StoreId;
CurrencyPair[]? currencyPairs = null;
try
@ -85,13 +85,13 @@ namespace BTCPayServer.Controllers
return View(model);
}
}
RateRules? rules = null;
RateRules? rules;
if (model.ShowScripting)
{
if (!RateRules.TryParse(model.Script, out rules, out var errors))
{
errors = errors ?? new List<RateRulesErrors>();
var errorString = String.Join(", ", errors.ToArray());
errors ??= [];
var errorString = string.Join(", ", errors.ToArray());
ModelState.AddModelError(nameof(model.Script), $"Parsing error ({errorString})");
return View(model);
}
@ -129,7 +129,7 @@ namespace BTCPayServer.Controllers
foreach (var fetch in fetchs)
{
var testResult = await (fetch.Value);
testResults.Add(new RatesViewModel.TestResultViewModel()
testResults.Add(new RatesViewModel.TestResultViewModel
{
CurrencyPair = fetch.Key.ToString(),
Error = testResult.Errors.Count != 0,
@ -140,8 +140,8 @@ namespace BTCPayServer.Controllers
model.TestRateRules = testResults;
return View(model);
}
else // command == Save
{
// command == Save
if (CurrentStore.SetStoreBlob(blob))
{
await _storeRepo.UpdateStore(CurrentStore);
@ -152,7 +152,6 @@ namespace BTCPayServer.Controllers
storeId = CurrentStore.Id
});
}
}
[HttpGet("{storeId}/rates/confirm")]
[Authorize(Policy = Policies.CanModifyStoreSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]

View file

@ -73,7 +73,7 @@ namespace BTCPayServer.Controllers
[FromServices] StoreRepository storeRepository,
[FromRoute] string role, UpdateRoleViewModel viewModel)
{
string successMessage = null;
string successMessage;
StoreRoleId roleId;
if (role == "create")
{
@ -122,7 +122,7 @@ namespace BTCPayServer.Controllers
[FromServices] StoreRepository storeRepository,
string role)
{
var roleData = await storeRepository.GetStoreRole(new StoreRoleId(storeId, role), true);;
var roleData = await storeRepository.GetStoreRole(new StoreRoleId(storeId, role), true);
if (roleData == null)
return NotFound();

View file

@ -358,7 +358,7 @@ namespace BTCPayServer.Controllers
{
var paymentMethodId = PaymentMethodId.Parse(newCriteria.PaymentMethod);
if (_handlers.TryGet(paymentMethodId) is LightningLikePaymentHandler h)
model.PaymentMethodCriteria.Add(new PaymentMethodCriteriaViewModel()
model.PaymentMethodCriteria.Add(new PaymentMethodCriteriaViewModel
{
PaymentMethod = PaymentTypes.LNURL.GetPaymentMethodId(h.Network.CryptoCode).ToString(),
Type = newCriteria.Type,
@ -419,7 +419,7 @@ namespace BTCPayServer.Controllers
});
}
void SetCryptoCurrencies(CheckoutAppearanceViewModel vm, Data.StoreData storeData)
void SetCryptoCurrencies(CheckoutAppearanceViewModel vm, StoreData storeData)
{
var choices = GetEnabledPaymentMethodChoices(storeData);
var chosen = GetDefaultPaymentMethodChoice(storeData);
@ -432,7 +432,7 @@ namespace BTCPayServer.Controllers
{
var enabled = storeData.GetEnabledPaymentIds();
var defaultPaymentId = storeData.GetDefaultPaymentId();
var defaultChoice = defaultPaymentId is not null ? defaultPaymentId.FindNearest(enabled) : null;
var defaultChoice = defaultPaymentId?.FindNearest(enabled);
if (defaultChoice is null)
{
defaultChoice = enabled.FirstOrDefault(e => e == PaymentTypes.CHAIN.GetPaymentMethodId(_networkProvider.DefaultNetwork.CryptoCode)) ??

View file

@ -33,10 +33,7 @@ namespace BTCPayServer.Controllers
}).ToArray();
model.ApiKey = (await _tokenRepository.GetLegacyAPIKeys(CurrentStore.Id)).FirstOrDefault();
if (model.ApiKey == null)
model.EncodedApiKey = "*API Key*";
else
model.EncodedApiKey = Encoders.Base64.EncodeData(Encoders.ASCII.DecodeData(model.ApiKey));
model.EncodedApiKey = model.ApiKey == null ? "*API Key*" : Encoders.Base64.EncodeData(Encoders.ASCII.DecodeData(model.ApiKey));
return View(model);
}
@ -94,7 +91,7 @@ namespace BTCPayServer.Controllers
{
return View(nameof(CreateToken), model);
}
model.Label = model.Label ?? string.Empty;
model.Label ??= string.Empty;
var userId = GetUserId();
if (userId == null)
return Challenge(AuthenticationSchemes.Cookie);
@ -111,7 +108,7 @@ namespace BTCPayServer.Controllers
Id = model.PublicKey == null ? null : NBitpayClient.Extensions.BitIdExtensions.GetBitIDSIN(new PubKey(model.PublicKey).Compress())
};
string? pairingCode = null;
string? pairingCode;
if (model.PublicKey == null)
{
tokenRequest.PairingCode = await _tokenRepository.CreatePairingCodeAsync();
@ -245,20 +242,16 @@ namespace BTCPayServer.Controllers
if (pairingResult == PairingResult.Complete || pairingResult == PairingResult.Partial)
{
var excludeFilter = store.GetStoreBlob().GetExcludedPaymentMethods();
StoreNotConfigured = !store.GetPaymentMethodConfigs(_handlers)
.Where(p => !excludeFilter.Match(p.Key))
.Any();
StoreNotConfigured = store.GetPaymentMethodConfigs(_handlers).All(p => excludeFilter.Match(p.Key));
TempData[WellKnownTempData.SuccessMessage] = "Pairing is successful";
if (pairingResult == PairingResult.Partial)
TempData[WellKnownTempData.SuccessMessage] = "Server initiated pairing code: " + pairingCode;
return RedirectToAction(nameof(ListTokens), new
{
storeId = store.Id,
pairingCode = pairingCode
storeId = store.Id, pairingCode
});
}
else
{
TempData[WellKnownTempData.ErrorMessage] = $"Pairing failed ({pairingResult})";
return RedirectToAction(nameof(ListTokens), new
{
@ -267,4 +260,3 @@ namespace BTCPayServer.Controllers
}
}
}
}

View file

@ -158,9 +158,7 @@ namespace BTCPayServer.Controllers
private string? GetUserId()
{
if (User.Identity?.AuthenticationType != AuthenticationSchemes.Cookie)
return null;
return _userManager.GetUserId(User);
return User.Identity?.AuthenticationType != AuthenticationSchemes.Cookie ? null : _userManager.GetUserId(User);
}
}
}