From 3a04c7ff1ea6975a6096010118f3a63ff099b108 Mon Sep 17 00:00:00 2001 From: David Adegoke <64401859+Blazebrain@users.noreply.github.com> Date: Wed, 16 Sep 2026 22:05:40 +0100 Subject: [PATCH] feat: restrict history api calls when toggle is off in privacy settings (#3615) * feat: restrict history api calls when toggle is off in privacy settings * refactor: remove unnecessary transaction timer cancellation --- cw_evm/lib/evm_chain_wallet.dart | 14 ++++++++++--- cw_evm/lib/utils/evm_chain_utils.dart | 4 ++-- cw_tron/lib/tron_wallet.dart | 21 +++++++++++++++++-- cw_tron/pubspec.yaml | 1 + docs/ADDING_EVM_L2_WALLET_NETWORK_TYPES.md | 4 ++-- .../settings/connection_sync_page.dart | 2 +- 6 files changed, 36 insertions(+), 10 deletions(-) diff --git a/cw_evm/lib/evm_chain_wallet.dart b/cw_evm/lib/evm_chain_wallet.dart index d66aa6fd4..93a3b9759 100644 --- a/cw_evm/lib/evm_chain_wallet.dart +++ b/cw_evm/lib/evm_chain_wallet.dart @@ -267,7 +267,13 @@ abstract class EVMChainWalletBase Future checkIfScanProviderIsEnabled() async { final key = EVMChainUtils.getScanProviderPreferenceKey(selectedChainId); - return (await sharedPrefs.future).getBool(key) ?? true; + + try { + return (await sharedPrefs.future).getBool(key) ?? true; + } catch (e) { + printV("Could not read the $key preference: $e"); + return false; + } } EVMChainTransactionInfo getTransactionInfo( @@ -1124,6 +1130,10 @@ abstract class EVMChainWalletBase @override Future> fetchTransactions() async { + if (!await checkIfScanProviderIsEnabled()) { + return {}; + } + final List transactions = []; final List>> erc20TokensTransactions = []; @@ -1557,8 +1567,6 @@ abstract class EVMChainWalletBase if (isEnabled) { _updateTransactions(); _setTransactionUpdateTimer(); - } else { - _transactionsUpdateTimer?.cancel(); } } diff --git a/cw_evm/lib/utils/evm_chain_utils.dart b/cw_evm/lib/utils/evm_chain_utils.dart index 969ffc7b3..39e52d50b 100644 --- a/cw_evm/lib/utils/evm_chain_utils.dart +++ b/cw_evm/lib/utils/evm_chain_utils.dart @@ -46,8 +46,8 @@ class EVMChainUtils { static String getScanProviderPreferenceKey(int chainId) => switch (chainId) { 1 => "use_etherscan", 137 => "use_polygonscan", - 8453 => "use_basescan", - 42161 => "use_arbiscan", + 8453 => "use_base_scan", + 42161 => "use_arbitrum_scan", 56 => "use_bscscan", _ => "use_etherscan", }; diff --git a/cw_tron/lib/tron_wallet.dart b/cw_tron/lib/tron_wallet.dart index 32ff8c75c..ba6d2a444 100644 --- a/cw_tron/lib/tron_wallet.dart +++ b/cw_tron/lib/tron_wallet.dart @@ -13,6 +13,7 @@ import 'package:cw_core/pending_transaction.dart'; import 'package:cw_core/sync_status.dart'; import 'package:cw_core/transaction_direction.dart'; import 'package:cw_core/transaction_priority.dart'; +import "package:cw_core/utils/print_verbose.dart"; import 'package:cw_core/wallet_addresses.dart'; import 'package:cw_core/wallet_base.dart'; import 'package:cw_core/wallet_info.dart'; @@ -30,6 +31,7 @@ import 'package:cw_tron/tron_transaction_info.dart'; import 'package:cw_tron/tron_wallet_addresses.dart'; import 'package:mobx/mobx.dart'; import 'package:on_chain/on_chain.dart'; +import "package:shared_preferences/shared_preferences.dart"; part 'tron_wallet.g.dart'; @@ -373,8 +375,21 @@ abstract class TronWalletBase ]); } + Future checkIfScanProviderIsEnabled() async { + try { + return (await SharedPreferences.getInstance()).getBool("use_trongrid") ?? true; + } catch (e) { + printV("Could not read the TronGrid preference: $e"); + return false; + } + } + @override Future> fetchTransactions() async { + if (!await checkIfScanProviderIsEnabled()) { + return transactionHistory.transactions; + } + final address = _tronAddress; final transactions = await _client.fetchTransactions(address); @@ -441,6 +456,10 @@ abstract class TronWalletBase } Future fetchTrc20ExcludedTransactions() async { + if (!await checkIfScanProviderIsEnabled()) { + return; + } + final address = _tronAddress; final transactions = await _client.fetchTrc20ExcludedTransactions(address); @@ -645,8 +664,6 @@ abstract class TronWalletBase fetchTransactions(); fetchTrc20ExcludedTransactions(); _setTransactionUpdateTimer(); - } else { - _transactionsUpdateTimer?.cancel(); } } diff --git a/cw_tron/pubspec.yaml b/cw_tron/pubspec.yaml index c765ea78e..a5368b970 100644 --- a/cw_tron/pubspec.yaml +++ b/cw_tron/pubspec.yaml @@ -26,6 +26,7 @@ dependencies: mobx: ^2.3.0+1 bip39: ^1.0.6 hive: ^2.2.3 + shared_preferences: ^2.0.15 dev_dependencies: flutter_test: diff --git a/docs/ADDING_EVM_L2_WALLET_NETWORK_TYPES.md b/docs/ADDING_EVM_L2_WALLET_NETWORK_TYPES.md index c5ef9747c..dd8cc92b8 100644 --- a/docs/ADDING_EVM_L2_WALLET_NETWORK_TYPES.md +++ b/docs/ADDING_EVM_L2_WALLET_NETWORK_TYPES.md @@ -275,8 +275,8 @@ static String getScanProviderPreferenceKey(int chainId) { return switch (chainId) { 1 => 'use_etherscan', 137 => 'use_polygonscan', - 8453 => 'use_basescan', - 42161 => 'use_arbiscan', + 8453 => 'use_base_scan', + 42161 => 'use_arbitrum_scan', 10 => 'use_optimismscan', // NEW _ => 'use_etherscan', // Default }; diff --git a/lib/src/screens/settings/connection_sync_page.dart b/lib/src/screens/settings/connection_sync_page.dart index fb251f55f..ca9c46165 100644 --- a/lib/src/screens/settings/connection_sync_page.dart +++ b/lib/src/screens/settings/connection_sync_page.dart @@ -89,7 +89,7 @@ class ConnectionSyncPage extends BasePage { ListItemToggle( keyValue: "can_use_basescan", label: S.of(context).basescan_history, - value: _connectionSyncViewModel.canUseBaseScan, + value: _connectionSyncViewModel.useBaseScan, onChanged: (val) { _connectionSyncViewModel.setUseBaseScan(val); }),