ens review fixes

fosse committed Sep 25, 2023 at 09:47 UTC 8b2b3bda16c008cbb0d08b832f6b20c569d7ee42
8 files changed +52 -20
cw_ethereum/lib/ethereum_client.dart
+4
@@ -226,6 +226,10 @@ I/flutter ( 4474): Gas Used: 53000
226 }
227 }
228
229 + dynamic getWeb3Client() {
230 + return _client;
231 + }
232 +
233 // Future<int> _getDecimalPlacesForContract(DeployedContract contract) async {
234 // final String abi = await rootBundle.loadString("assets/abi_json/erc20_abi.json");
235 // final contractAbi = ContractAbi.fromJson(abi, "ERC20");
cw_ethereum/lib/ethereum_wallet.dart
+1 -3
@@ -509,7 +509,5 @@ abstract class EthereumWalletBase
509 String signMessage(String message, {String? address = null}) =>
510 bytesToHex(_ethPrivateKey.signPersonalMessageToUint8List(ascii.encode(message)));
511
512 - Future<String> fetchEnsAddress(String name) async {
513 - return await _client.checkEnsName(name);
514 - }
512 + dynamic getWeb3Client() => _client;
513 }
cw_ethereum/pubspec.yaml
-4
@@ -21,10 +21,6 @@ dependencies:
21 hex: ^0.2.0
22 http: ^1.1.0
23 shared_preferences: ^2.0.15
24 - ens_dart:
25 - git:
26 - url: https://github.com/cake-tech/ens_dart.git
27 - ref: main
24 cw_core:
25 path: ../cw_core
26
lib/entities/ens_record.dart new
+30
@@ -0,0 +1,30 @@
1 +import 'package:cake_wallet/ethereum/ethereum.dart';
2 +import 'package:cw_core/wallet_base.dart';
3 +import 'package:cw_core/wallet_type.dart';
4 +import 'package:ens_dart/ens_dart.dart';
5 +import 'package:http/http.dart';
6 +import 'package:web3dart/web3dart.dart';
7 +
8 +class EnsRecord {
9 + static Future<String> fetchEnsAddress(String name, {WalletBase? wallet}) async {
10 + Web3Client? _client;
11 +
12 + if (wallet != null && wallet.type == WalletType.ethereum) {
13 + _client = ethereum!.getWeb3Client(wallet) as Web3Client?;
14 + }
15 +
16 + if (_client == null) {
17 + _client = Web3Client("ethereum.publicnode.com", Client());
18 + }
19 +
20 + try {
21 + final ens = Ens(client: _client);
22 +
23 + final addr = await ens.withName(name).getAddress();
24 + return addr.hex;
25 + } catch (e) {
26 + print(e);
27 + return "";
28 + }
29 + }
30 +}
lib/entities/parse_address_from_domain.dart
+10 -10
@@ -1,6 +1,7 @@
1 import 'package:cake_wallet/core/address_validator.dart';
2 import 'package:cake_wallet/core/yat_service.dart';
3 import 'package:cake_wallet/di.dart';
4 +import 'package:cake_wallet/entities/ens_record.dart';
5 import 'package:cake_wallet/entities/openalias_record.dart';
6 import 'package:cake_wallet/entities/parsed_address.dart';
7 import 'package:cake_wallet/entities/unstoppable_domain_address.dart';
@@ -66,7 +67,7 @@ class AddressResolver {
67 });
68 final userTweetsText = subString.toString();
69 final addressFromPinnedTweet =
69 - extractAddressByType(raw: userTweetsText, type: CryptoCurrency.fromString(ticker));
70 + extractAddressByType(raw: userTweetsText, type: CryptoCurrency.fromString(ticker));
71
72 if (addressFromPinnedTweet != null) {
73 return ParsedAddress.fetchTwitterAddress(address: addressFromPinnedTweet, name: text);
@@ -99,6 +100,14 @@ class AddressResolver {
100 return ParsedAddress.fetchUnstoppableDomainAddress(address: address, name: text);
101 }
102
103 + if (text.contains(".")) {
104 + var wallet = getIt.get<AppStore>().wallet!;
105 + final address = await EnsRecord.fetchEnsAddress(text, wallet: wallet);
106 + if (address.isNotEmpty) {
107 + return ParsedAddress.fetchEnsAddress(name: text, address: address);
108 + }
109 + }
110 +
111 if (formattedName.contains(".")) {
112 final txtRecord = await OpenaliasRecord.lookupOpenAliasRecord(formattedName);
113 if (txtRecord != null) {
@@ -107,15 +116,6 @@ class AddressResolver {
116 return ParsedAddress.fetchOpenAliasAddress(record: record, name: text);
117 }
118 }
110 - if (text.contains(".")) {
111 - var wallet = getIt.get<AppStore>().wallet!;
112 - if (wallet.type == WalletType.ethereum) {
113 - final address = await ethereum!.fetchEnsAddress(wallet, text);
114 - if (address.isNotEmpty) {
115 - return ParsedAddress.fetchEnsAddress(name: text, address: address);
116 - }
117 - }
118 - }
119 } catch (e) {
120 print(e.toString());
121 }
lib/ethereum/cw_ethereum.dart
+2 -2
@@ -133,7 +133,7 @@ class CWEthereum extends Ethereum {
133 }
134
135 @override
136 - Future<String> fetchEnsAddress(WalletBase wallet, String name) async {
137 - return (wallet as EthereumWallet).fetchEnsAddress(name);
136 + dynamic getWeb3Client(WalletBase wallet) async {
137 + return (wallet as EthereumWallet).getWeb3Client();
138 }
139 }
pubspec_base.yaml
+4
@@ -82,6 +82,10 @@ dependencies:
82 shared_preferences_android: 2.0.17
83 url_launcher_android: 6.0.24
84 sensitive_clipboard: ^1.0.0
85 + ens_dart:
86 + git:
87 + url: https://github.com/cake-tech/ens_dart.git
88 + ref: main
89 bitcoin_flutter:
90 git:
91 url: https://github.com/cake-tech/bitcoin_flutter.git
tool/configure.dart
+1 -1
@@ -525,7 +525,7 @@ abstract class Ethereum {
525
526 CryptoCurrency assetOfTransaction(WalletBase wallet, TransactionInfo transaction);
527 void updateEtherscanUsageState(WalletBase wallet, bool isEnabled);
528 - Future<String> fetchEnsAddress(WalletBase wallet, String name);
528 + dynamic getWeb3Client(WalletBase wallet);
529 }
530 """;
531