- An automated payout procesor for Lightning is required in order to automate prism payouts.
+ An automated payout processor for Lightning is required in order to automate prism payouts.
Configure now
}
@@ -133,6 +133,10 @@ else
+ @if (PrismEditButtonsFilter is not null)
+ {
+ @((MarkupString)PrismEditButtonsFilter)
+ }
@@ -181,10 +185,12 @@ else
public PaymentMethodId pmi { get; set; } = new("BTC", LightningPaymentType.Instance);
public bool NoPayoutProcessors { get; set; }
+ private string PrismEditButtonsFilter { get; set; }
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
+ PrismEditButtonsFilter = (await PluginHookService.ApplyFilter("prism-edit-buttons", "")) as string;
PayoutProcessorLink = LinkGenerator.GetUriByAction(HttpContextAccessor.HttpContext, "ConfigureStorePayoutProcessors", "UIPayoutProcessors", new {StoreId});
LNAddressLink = LinkGenerator.GetUriByAction(HttpContextAccessor.HttpContext, "EditLightningAddress", "UILNURL", new {StoreId});
PayoutsLink = LinkGenerator.GetUriByAction(HttpContextAccessor.HttpContext, "Payouts", "UIStorePullPayments", new {StoreId, payoutState = PayoutState.AwaitingPayment, paymentMethodId = pmi.ToString()});
diff --git a/Plugins/BTCPayServer.Plugins.Prism/SatBreaker.cs b/Plugins/BTCPayServer.Plugins.Prism/SatBreaker.cs
index 0d4cbc2..bd90542 100644
--- a/Plugins/BTCPayServer.Plugins.Prism/SatBreaker.cs
+++ b/Plugins/BTCPayServer.Plugins.Prism/SatBreaker.cs
@@ -406,47 +406,44 @@ namespace BTCPayServer.Plugins.Prism
{
continue;
}
- IClaimDestination dest = null;
- var dest2 = await _pluginHookService.ApplyFilter("prism-claim-destination", destinationSettings?.Destination??destination);
-
- dest = dest2 switch
- {
- IClaimDestination claimDestination => claimDestination,
- string destStr when !string.IsNullOrEmpty(destStr) => new LNURLPayClaimDestinaton(destStr),
- _ => null
- };
-
- if (dest is null)
- {
- continue;
- }
var pmi = string.IsNullOrEmpty(destinationSettings?.PaymentMethodId) ||
!PaymentMethodId.TryParse(destinationSettings?.PaymentMethodId, out var pmi2)
? new PaymentMethodId("BTC", LightningPaymentType.Instance)
: pmi2;
- var payout = await _pullPaymentHostedService.Claim(new ClaimRequest()
+
+ var claimRequest = new ClaimRequest()
{
- Destination = dest,
+ Destination = new LNURLPayClaimDestinaton(destinationSettings?.Destination??destination),
PreApprove = true,
StoreId = storeId,
PaymentMethodId = pmi,
Value = Money.Satoshis(payoutAmount).ToDecimal(MoneyUnit.BTC),
- });
- if (payout.Result == ClaimRequest.ClaimResult.Ok)
- {
- prismSettings.PendingPayouts ??= new();
- prismSettings.PendingPayouts.Add(payout.PayoutData.Id,
- new PendingPayout(payoutAmount, reserveFee));
- var newAmount = amtMsats - (payoutAmount + reserveFee) * 1000;
- if(newAmount == 0)
- prismSettings.DestinationBalance.Remove(destination);
- else
+ Metadata = JObject.FromObject(new
{
- prismSettings.DestinationBalance.AddOrReplace(destination,newAmount);
- }
- result = true;
+ Source = "Prism"
+ })
+ };
+ claimRequest = (await _pluginHookService.ApplyFilter("prism-claim-create", claimRequest)) as ClaimRequest;
+
+ if (claimRequest is null)
+ {
+ continue;
}
+
+ var payout = await _pullPaymentHostedService.Claim(claimRequest);
+ if (payout.Result != ClaimRequest.ClaimResult.Ok) continue;
+ prismSettings.PendingPayouts ??= new Dictionary();
+ prismSettings.PendingPayouts.Add(payout.PayoutData.Id,
+ new PendingPayout(payoutAmount, reserveFee));
+ var newAmount = amtMsats - (payoutAmount + reserveFee) * 1000;
+ if(newAmount == 0)
+ prismSettings.DestinationBalance.Remove(destination);
+ else
+ {
+ prismSettings.DestinationBalance.AddOrReplace(destination,newAmount);
+ }
+ result = true;
}
}