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