public IActionResult LightningSettings(string storeId, string cryptoCode) { var store = HttpContext.GetStoreData(); if (store == null) { return(NotFound()); } var storeBlob = store.GetStoreBlob(); var excludeFilters = storeBlob.GetExcludedPaymentMethods(); var lightning = GetExistingLightningSupportedPaymentMethod(cryptoCode, store); if (lightning == null) { TempData[WellKnownTempData.ErrorMessage] = $"You need to connect to a Lightning node before adjusting its settings."; return(RedirectToAction(nameof(SetupLightningNode), new { storeId, cryptoCode })); } var vm = new LightningSettingsViewModel { CryptoCode = cryptoCode, StoreId = storeId, Enabled = !excludeFilters.Match(lightning.PaymentId), LightningDescriptionTemplate = storeBlob.LightningDescriptionTemplate, LightningAmountInSatoshi = storeBlob.LightningAmountInSatoshi, LightningPrivateRouteHints = storeBlob.LightningPrivateRouteHints, OnChainWithLnInvoiceFallback = storeBlob.OnChainWithLnInvoiceFallback }; SetExistingValues(store, vm); if (lightning != null) { vm.DisableBolt11PaymentMethod = lightning.DisableBOLT11PaymentOption; } var lnurl = GetExistingLNURLSupportedPaymentMethod(vm.CryptoCode, store); if (lnurl != null) { vm.LNURLEnabled = !store.GetStoreBlob().GetExcludedPaymentMethods().Match(lnurl.PaymentId); vm.LNURLBech32Mode = lnurl.UseBech32Scheme; vm.LNURLStandardInvoiceEnabled = lnurl.EnableForStandardInvoices; vm.LUD12Enabled = lnurl.LUD12Enabled; vm.DisableBolt11PaymentMethod = vm.LNURLEnabled && vm.LNURLStandardInvoiceEnabled && vm.DisableBolt11PaymentMethod; } else { //disable by default for now //vm.LNURLEnabled = !lnSet; vm.DisableBolt11PaymentMethod = false; } return(View(vm)); }
public async Task <IActionResult> LightningSettings(string storeId, string cryptoCode) { var store = HttpContext.GetStoreData(); if (store == null) { return(NotFound()); } var storeBlob = store.GetStoreBlob(); var excludeFilters = storeBlob.GetExcludedPaymentMethods(); var lightning = GetExistingLightningSupportedPaymentMethod(cryptoCode, store); var vm = new LightningSettingsViewModel { CryptoCode = cryptoCode, StoreId = storeId, Enabled = !excludeFilters.Match(lightning.PaymentId), LightningDescriptionTemplate = storeBlob.LightningDescriptionTemplate, LightningAmountInSatoshi = storeBlob.LightningAmountInSatoshi, LightningPrivateRouteHints = storeBlob.LightningPrivateRouteHints, OnChainWithLnInvoiceFallback = storeBlob.OnChainWithLnInvoiceFallback }; await SetExistingValues(store, vm); var lnSet = lightning != null; if (lnSet) { vm.DisableBolt11PaymentMethod = lightning.DisableBOLT11PaymentOption; } var lnurl = GetExistingLNURLSupportedPaymentMethod(vm.CryptoCode, store); if (lnurl != null) { vm.LNURLEnabled = !store.GetStoreBlob().GetExcludedPaymentMethods().Match(lnurl.PaymentId); vm.LNURLBech32Mode = lnurl.UseBech32Scheme; vm.LNURLStandardInvoiceEnabled = lnurl.EnableForStandardInvoices; vm.LUD12Enabled = lnurl.LUD12Enabled; vm.DisableBolt11PaymentMethod = vm.LNURLEnabled && vm.LNURLStandardInvoiceEnabled && vm.DisableBolt11PaymentMethod; } else { //disable by default for now //vm.LNURLEnabled = !lnSet; vm.DisableBolt11PaymentMethod = false; } return(View(vm)); }
public async Task <IActionResult> LightningSettings(LightningSettingsViewModel vm) { var store = HttpContext.GetStoreData(); if (store == null) { return(NotFound()); } if (vm.CryptoCode == null) { ModelState.AddModelError(nameof(vm.CryptoCode), "Invalid network"); return(View(vm)); } var network = _ExplorerProvider.GetNetwork(vm.CryptoCode); var needUpdate = false; var blob = store.GetStoreBlob(); blob.LightningDescriptionTemplate = vm.LightningDescriptionTemplate ?? string.Empty; blob.LightningAmountInSatoshi = vm.LightningAmountInSatoshi; blob.LightningPrivateRouteHints = vm.LightningPrivateRouteHints; blob.OnChainWithLnInvoiceFallback = vm.OnChainWithLnInvoiceFallback; var disableBolt11PaymentMethod = vm.LNURLEnabled && vm.LNURLStandardInvoiceEnabled && vm.DisableBolt11PaymentMethod; var lnurlId = new PaymentMethodId(vm.CryptoCode, PaymentTypes.LNURLPay); blob.SetExcluded(lnurlId, !vm.LNURLEnabled); var lightning = GetExistingLightningSupportedPaymentMethod(vm.CryptoCode, store); // Going to mark "lightning" as non-null here assuming that if we are POSTing here it's because we have a Lightning Node set-up if (lightning !.DisableBOLT11PaymentOption != disableBolt11PaymentMethod) { needUpdate = true; lightning.DisableBOLT11PaymentOption = disableBolt11PaymentMethod; store.SetSupportedPaymentMethod(lightning); } var lnurl = GetExistingLNURLSupportedPaymentMethod(vm.CryptoCode, store); if (lnurl is null || ( lnurl.EnableForStandardInvoices != vm.LNURLStandardInvoiceEnabled || lnurl.UseBech32Scheme != vm.LNURLBech32Mode || lnurl.LUD12Enabled != vm.LUD12Enabled)) { needUpdate = true; } store.SetSupportedPaymentMethod(new LNURLPaySupportedPaymentMethod { CryptoCode = vm.CryptoCode, EnableForStandardInvoices = vm.LNURLStandardInvoiceEnabled, UseBech32Scheme = vm.LNURLBech32Mode, LUD12Enabled = vm.LUD12Enabled }); if (store.SetStoreBlob(blob)) { needUpdate = true; } if (needUpdate) { await _Repo.UpdateStore(store); TempData[WellKnownTempData.SuccessMessage] = $"{network.CryptoCode} Lightning settings successfully updated."; } return(RedirectToAction(nameof(LightningSettings), new { vm.StoreId, vm.CryptoCode })); }