Fix payout/pull payment crash when no payment method bug

Fixes #3084.
This commit is contained in:
Samuel Adams
2021-11-12 20:09:32 -05:00
parent 08f57558da
commit a7ef9c7c27

View File

@@ -65,14 +65,23 @@ namespace BTCPayServer.Controllers
if (CurrentStore is null) if (CurrentStore is null)
return NotFound(); return NotFound();
var paymentMethodOptions = await _payoutHandlers.GetSupportedPaymentMethods(CurrentStore); var paymentMethods = await _payoutHandlers.GetSupportedPaymentMethods(CurrentStore);
if (!paymentMethods.Any())
{
TempData.SetStatusMessageModel(new StatusMessageModel
{
Message = "You must enable at least one payment method before creating a pull payment.",
Severity = StatusMessageModel.StatusSeverity.Error
});
return RedirectToAction("PaymentMethods", "Stores", new { storeId });
}
return View(new NewPullPaymentModel return View(new NewPullPaymentModel
{ {
Name = "", Name = "",
Currency = "BTC", Currency = "BTC",
CustomCSSLink = "", CustomCSSLink = "",
EmbeddedCSS = "", EmbeddedCSS = "",
PaymentMethodItems = paymentMethodOptions.Select(id => new SelectListItem(id.ToPrettyString(), id.ToString(), true)) PaymentMethodItems = paymentMethods.Select(id => new SelectListItem(id.ToPrettyString(), id.ToString(), true))
}); });
} }
@@ -406,6 +415,16 @@ namespace BTCPayServer.Controllers
int skip = 0, int count = 50) int skip = 0, int count = 50)
{ {
var paymentMethods = await _payoutHandlers.GetSupportedPaymentMethods(HttpContext.GetStoreData()); var paymentMethods = await _payoutHandlers.GetSupportedPaymentMethods(HttpContext.GetStoreData());
if (!paymentMethods.Any())
{
TempData.SetStatusMessageModel(new StatusMessageModel
{
Message = "You must enable at least one payment method before creating a payout.",
Severity = StatusMessageModel.StatusSeverity.Error
});
return RedirectToAction("PaymentMethods", "Stores", new { storeId });
}
var vm = this.ParseListQuery(new PayoutsModel var vm = this.ParseListQuery(new PayoutsModel
{ {
PaymentMethods = paymentMethods, PaymentMethods = paymentMethods,