diff --git a/BTCPayServer.Tests/ThirdPartyTests.cs b/BTCPayServer.Tests/ThirdPartyTests.cs index 442207dd1..1990f25a8 100644 --- a/BTCPayServer.Tests/ThirdPartyTests.cs +++ b/BTCPayServer.Tests/ThirdPartyTests.cs @@ -622,7 +622,7 @@ retry: string currency = "USD") { var storeController = user.GetController(); - var vm = (RatesViewModel)((ViewResult)storeController.Rates()).Model; + var vm = (RatesViewModel)((ViewResult)await storeController.Rates()).Model; vm.PrimarySource.PreferredExchange = exchange; await storeController.Rates(vm); var invoice2 = await user.BitPay.CreateInvoiceAsync( diff --git a/BTCPayServer.Tests/UnitTest1.cs b/BTCPayServer.Tests/UnitTest1.cs index 0c858d0e3..aedebb434 100644 --- a/BTCPayServer.Tests/UnitTest1.cs +++ b/BTCPayServer.Tests/UnitTest1.cs @@ -1286,7 +1286,7 @@ namespace BTCPayServer.Tests Assert.Equal(Money.Coins(1.0m), invoice1.BtcPrice); var storeController = user.GetController(); - var vm = (RatesViewModel)((ViewResult)storeController.Rates()).Model; + var vm = (RatesViewModel)((ViewResult)await storeController.Rates()).Model; Assert.Equal(0.0, vm.Spread); vm.Spread = 40; await storeController.Rates(vm); diff --git a/BTCPayServer/Controllers/GreenField/GreenfieldStoreRatesConfigurationController.cs b/BTCPayServer/Controllers/GreenField/GreenfieldStoreRatesConfigurationController.cs index 84f8f59f5..6d30ca129 100644 --- a/BTCPayServer/Controllers/GreenField/GreenfieldStoreRatesConfigurationController.cs +++ b/BTCPayServer/Controllers/GreenField/GreenfieldStoreRatesConfigurationController.cs @@ -215,7 +215,7 @@ $"You can't set the preferredSource if you are using custom scripts"); .RateProviderFactory .AvailableRateProviders .FirstOrDefault(s => - s.Id.Equals(configuration.PreferredSource, + (s.Id ?? "").Equals(configuration.PreferredSource, StringComparison.InvariantCultureIgnoreCase))?.Id; if (string.IsNullOrEmpty(configuration.PreferredSource)) diff --git a/BTCPayServer/Controllers/UIStoresController.Rates.cs b/BTCPayServer/Controllers/UIStoresController.Rates.cs index cd82e1db4..9fc7b15c5 100644 --- a/BTCPayServer/Controllers/UIStoresController.Rates.cs +++ b/BTCPayServer/Controllers/UIStoresController.Rates.cs @@ -21,11 +21,11 @@ namespace BTCPayServer.Controllers; public partial class UIStoresController { [HttpGet("{storeId}/rates")] - public IActionResult Rates() + public async Task Rates() { var storeBlob = CurrentStore.GetStoreBlob(); var vm = new RatesViewModel(); - SetViewModel(vm, storeBlob); + await SetViewModel(vm, storeBlob); return View(vm); } @@ -64,7 +64,7 @@ public partial class UIStoresController if (!ModelState.IsValid) { - SetViewModel(model, storeBlob); + await SetViewModel(model, storeBlob); return View(model); } @@ -99,7 +99,7 @@ public partial class UIStoresController } else if (command == "Test") { - SetViewModel(model, storeBlob); + await SetViewModel(model, storeBlob); if (string.IsNullOrWhiteSpace(model.ScriptTest)) { ModelState.AddModelError(nameof(model.ScriptTest), StringLocalizer["Fill out currency pair to test for (like {0})", "BTC_USD,BTC_CAD"]); @@ -230,20 +230,20 @@ public partial class UIStoresController .OrderBy(s => s.DisplayName, StringComparer.OrdinalIgnoreCase).ToList(); } - private void SetViewModel(RatesViewModel vm, StoreBlob storeBlob) + private async Task SetViewModel(RatesViewModel vm, StoreBlob storeBlob) { vm.AvailableExchanges = GetAvailableExchanges(); vm.PrimarySource = new(); vm.FallbackSource = new() { IsFallback = true }; - SetViewModel(vm.PrimarySource, storeBlob.GetRateSettings(false), storeBlob); + await SetViewModel(vm.PrimarySource, storeBlob.GetRateSettings(false), storeBlob); if (storeBlob.GetRateSettings(true) is { } r) { vm.HasFallback = true; - SetViewModel(vm.FallbackSource, r, storeBlob); + await SetViewModel(vm.FallbackSource, r, storeBlob); } else { - SetViewModel(vm.FallbackSource, new(), storeBlob); + await SetViewModel(vm.FallbackSource, new(), storeBlob); } vm.Spread = (double)(storeBlob.Spread * 100m);