fix: add unrecoverable error handling for Payjoin sender sessions

This commit is contained in:
Konstantin Ullrich 2025-06-19 10:54:04 +02:00
parent dd689803e0
commit f7a4ddae28
No known key found for this signature in database
GPG key ID: 6B3199AD9B3D23B8
2 changed files with 5 additions and 6 deletions

View file

@ -121,15 +121,13 @@ class PayjoinManager {
} }
} catch (e) { } catch (e) {
_cleanupSession(pjUri); _cleanupSession(pjUri);
printV(e); await _payjoinStorage.markSenderSessionUnrecoverable(pjUri, e.toString());
await _payjoinStorage.markSenderSessionUnrecoverable(pjUri); completer.complete();
completer.completeError(e);
} }
} else if (message is PayjoinSessionError) { } else if (message is PayjoinSessionError) {
_cleanupSession(pjUri); _cleanupSession(pjUri);
if (message is UnrecoverableError) { if (message is UnrecoverableError) {
printV(message.message); await _payjoinStorage.markSenderSessionUnrecoverable(pjUri, message.message);
await _payjoinStorage.markSenderSessionUnrecoverable(pjUri);
completer.complete(); completer.complete();
} else if (message is RecoverableError) { } else if (message is RecoverableError) {
completer.complete(); completer.complete();

View file

@ -84,10 +84,11 @@ class PayjoinStorage {
await session.save(); await session.save();
} }
Future<void> markSenderSessionUnrecoverable(String pjUrl) async { Future<void> markSenderSessionUnrecoverable(String pjUrl, String reason) async {
final session = _payjoinSessionSources.get("$_senderPrefix$pjUrl")!; final session = _payjoinSessionSources.get("$_senderPrefix$pjUrl")!;
session.status = PayjoinSessionStatus.unrecoverable.name; session.status = PayjoinSessionStatus.unrecoverable.name;
session.error = reason;
await session.save(); await session.save();
} }