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
This commit is contained in:
David Adegoke
2026-09-16 23:05:40 +02:00
committed by GitHub
parent 5ed6759edc
commit 3a04c7ff1e
6 changed files with 36 additions and 10 deletions
+11 -3
View File
@@ -267,7 +267,13 @@ abstract class EVMChainWalletBase
Future<bool> 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<Map<String, EVMChainTransactionInfo>> fetchTransactions() async {
if (!await checkIfScanProviderIsEnabled()) {
return {};
}
final List<EVMChainTransactionModel> transactions = [];
final List<Future<List<EVMChainTransactionModel>>> erc20TokensTransactions = [];
@@ -1557,8 +1567,6 @@ abstract class EVMChainWalletBase
if (isEnabled) {
_updateTransactions();
_setTransactionUpdateTimer();
} else {
_transactionsUpdateTimer?.cancel();
}
}
+2 -2
View File
@@ -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",
};
+19 -2
View File
@@ -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<bool> 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<Map<String, TronTransactionInfo>> 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<void> 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();
}
}
+1
View File
@@ -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:
+2 -2
View File
@@ -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
};
@@ -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);
}),