mirror of
https://github.com/Such-Software/hash-wallet.git
synced 2026-10-26 06:08:40 +01:00
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:
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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",
|
||||
};
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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);
|
||||
}),
|
||||
|
||||
Reference in New Issue
Block a user