Tweaking invoice listening logic for disconnections

This commit is contained in:
rockstardev
2025-06-18 12:46:13 +02:00
parent 6761a8f385
commit 031f5fb474
2 changed files with 7 additions and 5 deletions

View File

@@ -9,7 +9,7 @@
<PropertyGroup> <PropertyGroup>
<Product>Blink</Product> <Product>Blink</Product>
<Description>Blink Lightning support</Description> <Description>Blink Lightning support</Description>
<Version>1.0.10</Version> <Version>1.0.11</Version>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies> <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
<RootNamespace>BTCPayServer.Plugins.Blink</RootNamespace> <RootNamespace>BTCPayServer.Plugins.Blink</RootNamespace>
</PropertyGroup> </PropertyGroup>

View File

@@ -1,4 +1,4 @@
#nullable enable #nullable enable
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@@ -408,12 +408,13 @@ expiresIn = (int)createInvoiceRequest.Expiry.TotalMinutes
private readonly BlinkLightningClient _lightningClient; private readonly BlinkLightningClient _lightningClient;
private readonly Channel<LightningInvoice> _invoices = Channel.CreateUnbounded<LightningInvoice>(); private readonly Channel<LightningInvoice> _invoices = Channel.CreateUnbounded<LightningInvoice>();
private readonly IDisposable _subscription; private readonly IDisposable _subscription;
private readonly ILogger _logger;
public BlinkListener(GraphQLHttpClient httpClient, BlinkLightningClient lightningClient, ILogger logger) public BlinkListener(GraphQLHttpClient httpClient, BlinkLightningClient lightningClient, ILogger logger)
{ {
try try
{ {
_logger = logger;
_lightningClient = lightningClient; _lightningClient = lightningClient;
var stream = httpClient.CreateSubscriptionStream<JObject>(new GraphQLRequest() var stream = httpClient.CreateSubscriptionStream<JObject>(new GraphQLRequest()
{ {
@@ -455,7 +456,7 @@ expiresIn = (int)createInvoiceRequest.Expiry.TotalMinutes
} }
catch (Exception e) catch (Exception e)
{ {
logger.LogError(e, "Error while processing detecting lightning invoice payment"); _logger.LogError(e, "Error while processing detecting lightning invoice payment");
} }
}); });
@@ -492,7 +493,8 @@ expiresIn = (int)createInvoiceRequest.Expiry.TotalMinutes
return await res; return await res;
} }
throw new Exception("Stream disconnected, cannot await invoice"); _logger.LogInformation("Stream disconnected, cannot await invoice. resultsz: "+ resultz);
return new LightningInvoice { Id = Guid.NewGuid().ToString() }; // Return a dummy invoice so calling listening logic exits
} }
} }
public async Task<(Network Network, string DefaultWalletId, string DefaultWalletCurrency)> GetNetworkAndDefaultWallet(CancellationToken cancellation =default) public async Task<(Network Network, string DefaultWalletId, string DefaultWalletCurrency)> GetNetworkAndDefaultWallet(CancellationToken cancellation =default)