diff --git a/lib/durt.dart b/lib/durt.dart index 077f0373e5fba5ebbdbbcdf9774262584f5c14b2..6f30a411f84ad53438ecc839c12c52a6a495de3a 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 e60c37f1acbf4714d8bb2bfe84d588f23cf5b322..96fc5e6fcd5f457ae062a374c713ac0b10bd03ba 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 49bead61904562923da12f4231c95fe921b28445..11fafbbea7292fc9d8d26cd0974fd8f2f549589c 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) {