diff --git a/cw_tron/lib/tron_client.dart b/cw_tron/lib/tron_client.dart index 8eca02af6..2d0c3cb45 100644 --- a/cw_tron/lib/tron_client.dart +++ b/cw_tron/lib/tron_client.dart @@ -25,6 +25,11 @@ class TronClient { int get chainId => 1000; + int retryCount = 0; + static const int MAX_RETRIES = 3; + + Future<void> switchNodes() async {} + Future<List<TronTransactionModel>> fetchTransactions(String address, {String? contractAddress}) async { try { @@ -50,9 +55,14 @@ class TronClient { return (jsonResponse['data'] as List).map((e) { return TronTransactionModel.fromJson(e as Map<String, dynamic>); }).toList(); + } else { + if (retryCount > MAX_RETRIES) { + retryCount++; + await switchNodes(); + return fetchTransactions(address, contractAddress: contractAddress); + } + return []; } - - return []; } catch (e, s) { log('Error getting tx: ${e.toString()}\n ${s.toString()}'); return []; @@ -83,8 +93,13 @@ class TronClient { return (jsonResponse['data'] as List).map((e) { return TronTRC20TransactionModel.fromJson(e as Map<String, dynamic>); }).toList(); + } else { + if (retryCount < MAX_RETRIES) { + retryCount++; + await switchNodes(); + return fetchTrc20ExcludedTransactions(address); + } } - return []; } catch (e, s) { log('Error getting trc20 tx: ${e.toString()}\n ${s.toString()}');