From 6495f4bcc0443a47323b3916dbb54562a2c4474f Mon Sep 17 00:00:00 2001 From: vjrj <vjrj@comunes.org> Date: Sun, 2 Apr 2023 19:59:15 +0200 Subject: [PATCH] Allow to conditionally raise an exception or not --- lib/durt.dart | 1 + lib/src/gva/gva.dart | 5 +++-- lib/src/gva/transaction.dart | 5 ++++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/durt.dart b/lib/durt.dart index 077f037..6f30a41 100644 --- a/lib/durt.dart +++ b/lib/durt.dart @@ -21,3 +21,4 @@ export 'src/crypto/dewif.dart' show Dewif, randomSecretCode, ChecksumException, NewWallet; export 'src/crypto/cesium_wallet.dart' show CesiumWallet; export 'src/gva/gva.dart' show Gva; +export 'src/gva/transaction.dart' show GraphQLException; diff --git a/lib/src/gva/gva.dart b/lib/src/gva/gva.dart index e60c37f..96fc5e6 100644 --- a/lib/src/gva/gva.dart +++ b/lib/src/gva/gva.dart @@ -96,7 +96,7 @@ class Gva { int? derivation, String comment = '', bool ud = false, - bool useMempool = false}) async { + bool useMempool = false, bool raiseException = false}) async { Transaction transaction; if (ud) { @@ -120,7 +120,7 @@ class Gva { client: _client); // Execute transaction - return await transaction.process(); + return await transaction.process(raiseException); } Future<Map<String,dynamic>?> history(String pubkey,[ int? pageSize, String? cursor]) async { @@ -140,6 +140,7 @@ class Gva { } else if (result.data != null) { return result.data; } + return null; } } diff --git a/lib/src/gva/transaction.dart b/lib/src/gva/transaction.dart index 49bead6..11fafbb 100644 --- a/lib/src/gva/transaction.dart +++ b/lib/src/gva/transaction.dart @@ -193,7 +193,7 @@ class Transaction { return false; } - Future<String> process() async { + Future<String> process([bool raiseException = false]) async { try { final List transDocs = await _generateTransactionDocument(); if (_checkTransactionDocument(transDocs)) { @@ -204,6 +204,9 @@ class Transaction { return 'Transaction document is not valid.'; } } on GraphQLException catch (e) { + if (raiseException) { + rethrow; + } List<String> eCause = e.cause.split('message: '); return eCause.isNotEmpty? eCause[eCause.length>1? 1:0].split(',')[0]:'Transaction failed for unknown reason'; } on MySelfException catch (e) { -- GitLab