ens working
fosse committed
Sep 21, 2023 at 10:16 UTC
a52c7b053e4f153b945f723d2a7e9270caf82f9d
33 files changed
+133
-63
cw_ethereum/lib/ethereum_client.dart
+3
-3
@@ -211,9 +211,9 @@ I/flutter ( 4474): Gas Used: 53000
211
}
212
}
213
214
- Future<String?> checkEnsName(String ensName) async {
214
+ Future<String> checkEnsName(String ensName) async {
215
if (_client == null) {
216
- return null;
216
+ return "";
217
}
218
try {
219
final ens = Ens(client: _client!);
@@ -222,7 +222,7 @@ I/flutter ( 4474): Gas Used: 53000
222
return addr.hex;
223
} catch (e) {
224
print(e);
225
- return null;
225
+ return "";
226
}
227
}
228
cw_ethereum/lib/ethereum_wallet.dart
+4
@@ -508,4 +508,8 @@ abstract class EthereumWalletBase
508
@override
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
+ }
515
}
lib/core/address_validator.dart
+1
-1
@@ -267,4 +267,4 @@ class AddressValidator extends TextValidator {
267
return null;
268
}
269
}
270
-}
270
+}
\ No newline at end of file
lib/entities/parse_address_from_domain.dart
+13
@@ -1,13 +1,17 @@
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/openalias_record.dart';
5
import 'package:cake_wallet/entities/parsed_address.dart';
6
import 'package:cake_wallet/entities/unstoppable_domain_address.dart';
7
import 'package:cake_wallet/entities/emoji_string_extension.dart';
8
+import 'package:cake_wallet/ethereum/ethereum.dart';
9
+import 'package:cake_wallet/store/app_store.dart';
10
import 'package:cake_wallet/twitter/twitter_api.dart';
11
import 'package:cw_core/crypto_currency.dart';
12
import 'package:cw_core/wallet_type.dart';
13
import 'package:cake_wallet/entities/fio_address_provider.dart';
14
+import 'package:cw_ethereum/ethereum_wallet.dart';
15
16
class AddressResolver {
17
AddressResolver({required this.yatService, required this.walletType});
@@ -104,6 +108,15 @@ class AddressResolver {
108
return ParsedAddress.fetchOpenAliasAddress(record: record, name: text);
109
}
110
}
111
+ if (text.contains(".")) {
112
+ var wallet = getIt.get<AppStore>().wallet!;
113
+ if (wallet.type == WalletType.ethereum) {
114
+ final address = await ethereum!.fetchEnsAddress(wallet, text);
115
+ if (address.isNotEmpty) {
116
+ return ParsedAddress.fetchEnsAddress(name: text, address: address);
117
+ }
118
+ }
119
+ }
120
} catch (e) {
121
print(e.toString());
122
}
lib/entities/parsed_address.dart
+10
-1
@@ -1,7 +1,7 @@
1
import 'package:cake_wallet/entities/openalias_record.dart';
2
import 'package:cake_wallet/entities/yat_record.dart';
3
4
-enum ParseFrom { unstoppableDomains, openAlias, yatRecord, fio, notParsed, twitter, contact }
4
+enum ParseFrom { unstoppableDomains, openAlias, yatRecord, fio, notParsed, twitter, ens, contact }
5
6
class ParsedAddress {
7
ParsedAddress({
@@ -77,8 +77,17 @@ class ParsedAddress {
77
);
78
}
79
80
+ factory ParsedAddress.fetchEnsAddress({required String address, required String name}) {
81
+ return ParsedAddress(
82
+ addresses: [address],
83
+ name: name,
84
+ parseFrom: ParseFrom.ens,
85
+ );
86
+ }
87
+
88
final List<String> addresses;
89
final String name;
90
final String description;
91
final ParseFrom parseFrom;
92
+
93
}
lib/ethereum/cw_ethereum.dart
+5
@@ -131,4 +131,9 @@ class CWEthereum extends Ethereum {
131
void updateEtherscanUsageState(WalletBase wallet, bool isEnabled) {
132
(wallet as EthereumWallet).updateEtherscanUsageState(isEnabled);
133
}
134
+
135
+ @override
136
+ Future<String> fetchEnsAddress(WalletBase wallet, String name) async {
137
+ return (wallet as EthereumWallet).fetchEnsAddress(name);
138
+ }
139
}
lib/src/screens/send/widgets/extract_address_from_parsed.dart
+5
@@ -18,6 +18,11 @@ Future<String> extractAddressFromParsed(
18
content = S.of(context).address_from_domain(parsedAddress.name);
19
address = parsedAddress.addresses.first;
20
break;
21
+ case ParseFrom.ens:
22
+ title = S.of(context).address_detected;
23
+ content = S.of(context).address_from_ens(parsedAddress.name);
24
+ address = parsedAddress.addresses.first;
25
+ break;
26
case ParseFrom.openAlias:
27
title = S.of(context).address_detected;
28
content = S.of(context).extracted_address_content('${parsedAddress.name} (OpenAlias)');
res/values/strings_ar.arb
+2
-1
@@ -688,5 +688,6 @@
688
"onramper_option_description": "شراء بسرعة التشفير مع العديد من طرق الدفع. متوفر في معظم البلدان. ينتشر وتختلف الرسوم.",
689
"default_buy_provider": "مزود شراء الافتراضي",
690
"ask_each_time": "اسأل في كل مرة",
691
- "buy_provider_unavailable": "مزود حاليا غير متوفر."
691
+ "buy_provider_unavailable": "مزود حاليا غير متوفر.",
692
+ "address_from_ens": "هذا ${domain} العنوان من ON ENS"
693
}
\ No newline at end of file
res/values/strings_bg.arb
+2
-1
@@ -684,5 +684,6 @@
684
"onramper_option_description": "Бързо купувайте криптовалута с много методи за плащане. Предлага се в повечето страни. Разпространенията и таксите варират.",
685
"default_buy_provider": "Доставчик по подразбиране купува",
686
"ask_each_time": "Питайте всеки път",
687
- "buy_provider_unavailable": "Понастоящем доставчик не е наличен."
687
+ "buy_provider_unavailable": "Понастоящем доставчик не е наличен.",
688
+ "address_from_ens": "Този адрес ${domain} е от on ens"
689
}
\ No newline at end of file
res/values/strings_cs.arb
+2
-1
@@ -684,5 +684,6 @@
684
"onramper_option_description": "Rychle si koupte krypto s mnoha metodami plateb. K dispozici ve většině zemí. Rozpětí a poplatky se liší.",
685
"default_buy_provider": "Výchozí poskytovatel nákupu",
686
"ask_each_time": "Zeptejte se pokaždé",
687
- "buy_provider_unavailable": "Poskytovatel aktuálně nedostupný."
687
+ "buy_provider_unavailable": "Poskytovatel aktuálně nedostupný.",
688
+ "address_from_ens": "Tato adresa je z ${domain} On On ENS"
689
}
\ No newline at end of file
res/values/strings_de.arb
+2
-1
@@ -692,5 +692,6 @@
692
"onramper_option_description": "Kaufen Sie schnell Krypto mit vielen Zahlungsmethoden. In den meisten Ländern erhältlich. Spreads und Gebühren variieren.",
693
"default_buy_provider": "Standard-Kaufanbieter",
694
"ask_each_time": "Jedes Mal fragen",
695
- "buy_provider_unavailable": "Anbieter derzeit nicht verfügbar."
695
+ "buy_provider_unavailable": "Anbieter derzeit nicht verfügbar.",
696
+ "address_from_ens": "Diese Adresse ${domain} stammt von one"
697
}
\ No newline at end of file
res/values/strings_en.arb
+2
-1
@@ -693,5 +693,6 @@
693
"default_buy_provider": "Default Buy Provider",
694
"ask_each_time": "Ask each time",
695
"robinhood_option_description": "Buy and transfer instantly using your debit card, bank account, or Robinhood balance. USA only.",
696
- "buy_provider_unavailable": "Provider currently unavailable."
696
+ "buy_provider_unavailable": "Provider currently unavailable.",
697
+ "address_from_ens": "This address is from ${domain} on ENS"
698
}
\ No newline at end of file
res/values/strings_es.arb
+2
-1
@@ -692,5 +692,6 @@
692
"onramper_option_description": "Compre rápidamente cripto con muchos métodos de pago. Disponible en la mayoría de los países. Los diferenciales y las tarifas varían.",
693
"default_buy_provider": "Proveedor de compra predeterminado",
694
"ask_each_time": "Pregunta cada vez",
695
- "buy_provider_unavailable": "Proveedor actualmente no disponible."
695
+ "buy_provider_unavailable": "Proveedor actualmente no disponible.",
696
+ "address_from_ens": "Esta dirección ${domain} es de en ENS"
697
}
\ No newline at end of file
res/values/strings_fr.arb
+2
-1
@@ -692,5 +692,6 @@
692
"onramper_option_description": "Achetez rapidement la crypto avec de nombreux méthodes de paiement. Disponible dans la plupart des pays. Les écarts et les frais varient.",
693
"default_buy_provider": "Fournisseur d'achat par défaut",
694
"ask_each_time": "Demandez à chaque fois",
695
- "buy_provider_unavailable": "Fournisseur actuellement indisponible."
695
+ "buy_provider_unavailable": "Fournisseur actuellement indisponible.",
696
+ "address_from_ens": "Cette adresse ${domain} est d'où"
697
}
\ No newline at end of file
res/values/strings_ha.arb
+2
-1
@@ -670,5 +670,6 @@
670
"onramper_option_description": "Da sauri sayi Crypto tare da hanyoyin biyan kuɗi da yawa. Akwai a yawancin ƙasashe. Yaduwa da kudade sun bambanta.",
671
"default_buy_provider": "Tsohuwar Siyarwa",
672
"ask_each_time": "Tambaya kowane lokaci",
673
- "buy_provider_unavailable": "Mai ba da kyauta a halin yanzu babu."
673
+ "buy_provider_unavailable": "Mai ba da kyauta a halin yanzu babu.",
674
+ "address_from_ens": "Wannan adireshin ${domain} yana fitowa ne"
675
}
\ No newline at end of file
res/values/strings_hi.arb
+2
-1
@@ -692,5 +692,6 @@
692
"onramper_option_description": "जल्दी से कई भुगतान विधियों के साथ क्रिप्टो खरीदें। अधिकांश देशों में उपलब्ध है। फैलता है और फीस अलग -अलग होती है।",
693
"default_buy_provider": "डिफ़ॉल्ट खरीद प्रदाता",
694
"ask_each_time": "हर बार पूछें",
695
- "buy_provider_unavailable": "वर्तमान में प्रदाता अनुपलब्ध है।"
695
+ "buy_provider_unavailable": "वर्तमान में प्रदाता अनुपलब्ध है।",
696
+ "address_from_ens": "यह पता ${domain} ENS से है"
697
}
\ No newline at end of file
res/values/strings_hr.arb
+2
-1
@@ -692,5 +692,6 @@
692
"onramper_option_description": "Brzo kupite kriptovalute s mnogim načinima plaćanja. Dostupno u većini zemalja. Širenja i naknade variraju.",
693
"default_buy_provider": "Zadani davatelj kupnje",
694
"ask_each_time": "Pitajte svaki put",
695
- "buy_provider_unavailable": "Davatelj trenutno nije dostupan."
695
+ "buy_provider_unavailable": "Davatelj trenutno nije dostupan.",
696
+ "address_from_ens": "Ova adresa je ${domain} iz ENS -a"
697
}
\ No newline at end of file
res/values/strings_id.arb
+2
-1
@@ -680,5 +680,6 @@
680
"onramper_option_description": "Beli crypto dengan cepat dengan banyak metode pembayaran. Tersedia di sebagian besar negara. Spread dan biaya bervariasi.",
681
"default_buy_provider": "Penyedia beli default",
682
"ask_each_time": "Tanyakan setiap kali",
683
- "buy_provider_unavailable": "Penyedia saat ini tidak tersedia."
683
+ "buy_provider_unavailable": "Penyedia saat ini tidak tersedia.",
684
+ "address_from_ens": "Alamat ini ${domain} berasal dari ENS"
685
}
\ No newline at end of file
res/values/strings_it.arb
+2
-1
@@ -692,5 +692,6 @@
692
"onramper_option_description": "Acquista rapidamente la criptovaluta con molti metodi di pagamento. Disponibile nella maggior parte dei paesi. Gli spread e le commissioni variano.",
693
"default_buy_provider": "Provider di acquisto predefinito",
694
"ask_each_time": "Chiedi ogni volta",
695
- "buy_provider_unavailable": "Provider attualmente non disponibile."
695
+ "buy_provider_unavailable": "Provider attualmente non disponibile.",
696
+ "address_from_ens": "Questo indirizzo ${domain} è da On ENS"
697
}
\ No newline at end of file
res/values/strings_ja.arb
+2
-1
@@ -692,5 +692,6 @@
692
"onramper_option_description": "多くの支払い方法で暗号をすばやく購入してください。ほとんどの国で利用可能です。スプレッドと料金は異なります。",
693
"default_buy_provider": "デフォルトの購入プロバイダー",
694
"ask_each_time": "毎回尋ねてください",
695
- "buy_provider_unavailable": "現在、プロバイダーは利用できません。"
695
+ "buy_provider_unavailable": "現在、プロバイダーは利用できません。",
696
+ "address_from_ens": "このアドレスは ${domain} onsからです"
697
}
\ No newline at end of file
res/values/strings_ko.arb
+2
-1
@@ -692,5 +692,6 @@
692
"onramper_option_description": "많은 결제 방법으로 암호화를 신속하게 구입하십시오. 대부분의 국가에서 사용할 수 있습니다. 스프레드와 수수료는 다양합니다.",
693
"default_buy_provider": "기본 구매 제공자",
694
"ask_each_time": "매번 물어보십시오",
695
- "buy_provider_unavailable": "제공자는 현재 사용할 수 없습니다."
695
+ "buy_provider_unavailable": "제공자는 현재 사용할 수 없습니다.",
696
+ "address_from_ens": "이 주소는 ${domain} ON ENS에서 나온 것입니다"
697
}
\ No newline at end of file
res/values/strings_my.arb
+2
-1
@@ -690,5 +690,6 @@
690
"onramper_option_description": "ငွေပေးချေမှုနည်းလမ်းများစွာဖြင့် Crypto ကိုလျင်မြန်စွာ 0 ယ်ပါ။ နိုင်ငံအများစုတွင်ရရှိနိုင်ပါသည်။ ဖြန့်ဖြူးနှင့်အခကြေးငွေကွဲပြားခြားနားသည်။",
691
"default_buy_provider": "Default Provider ကိုဝယ်ပါ",
692
"ask_each_time": "တစ်ခုချင်းစီကိုအချိန်မေးပါ",
693
- "buy_provider_unavailable": "လက်ရှိတွင်လက်ရှိမရနိုင်ပါ။"
693
+ "buy_provider_unavailable": "လက်ရှိတွင်လက်ရှိမရနိုင်ပါ။",
694
+ "address_from_ens": "ဒီလိပ်စာ ${domain} ens ကနေဖြစ်ပါတယ်"
695
}
\ No newline at end of file
res/values/strings_nl.arb
+2
-1
@@ -692,5 +692,6 @@
692
"onramper_option_description": "Koop snel crypto met veel betaalmethoden. Beschikbaar in de meeste landen. Spreads en vergoedingen variëren.",
693
"default_buy_provider": "Standaard Koopprovider",
694
"ask_each_time": "Vraag het elke keer",
695
- "buy_provider_unavailable": "Provider momenteel niet beschikbaar."
695
+ "buy_provider_unavailable": "Provider momenteel niet beschikbaar.",
696
+ "address_from_ens": "Dit adres ${domain} is van ON ENS"
697
}
\ No newline at end of file
res/values/strings_pl.arb
+2
-1
@@ -692,5 +692,6 @@
692
"onramper_option_description": "Szybko kup kryptowaluty z wieloma metodami płatności. Dostępne w większości krajów. Spready i opłaty różnią się.",
693
"default_buy_provider": "Domyślny dostawca zakupu",
694
"ask_each_time": "Zapytaj za każdym razem",
695
- "buy_provider_unavailable": "Dostawca obecnie niedostępny."
695
+ "buy_provider_unavailable": "Dostawca obecnie niedostępny.",
696
+ "address_from_ens": "Ten adres ${domain} pochodzi z end"
697
}
\ No newline at end of file
res/values/strings_pt.arb
+2
-1
@@ -691,5 +691,6 @@
691
"onramper_option_description": "Compre rapidamente criptografia com muitos métodos de pagamento. Disponível na maioria dos países. Os spreads e taxas variam.",
692
"default_buy_provider": "Provedor de compra padrão",
693
"ask_each_time": "Pergunte cada vez",
694
- "buy_provider_unavailable": "Provedor atualmente indisponível."
694
+ "buy_provider_unavailable": "Provedor atualmente indisponível.",
695
+ "address_from_ens": "Este endereço ${domain} é de ON ENS"
696
}
\ No newline at end of file
res/values/strings_ru.arb
+2
-1
@@ -692,5 +692,6 @@
692
"onramper_option_description": "Быстро купите крипто со многими способами оплаты. Доступно в большинстве стран. Спреды и сборы различаются.",
693
"default_buy_provider": "По умолчанию поставщик покупки",
694
"ask_each_time": "Спросите каждый раз",
695
- "buy_provider_unavailable": "Поставщик в настоящее время недоступен."
695
+ "buy_provider_unavailable": "Поставщик в настоящее время недоступен.",
696
+ "address_from_ens": "Этот адрес ${domain} с On ons"
697
}
\ No newline at end of file
res/values/strings_th.arb
+2
-1
@@ -690,5 +690,6 @@
690
"onramper_option_description": "ซื้อ crypto อย่างรวดเร็วด้วยวิธีการชำระเงินจำนวนมาก มีให้บริการในประเทศส่วนใหญ่ สเปรดและค่าธรรมเนียมแตกต่างกันไป",
691
"default_buy_provider": "ผู้ให้บริการซื้อเริ่มต้น",
692
"ask_each_time": "ถามทุกครั้ง",
693
- "buy_provider_unavailable": "ผู้ให้บริการไม่สามารถใช้งานได้ในปัจจุบัน"
693
+ "buy_provider_unavailable": "ผู้ให้บริการไม่สามารถใช้งานได้ในปัจจุบัน",
694
+ "address_from_ens": "ที่อยู่นี้มาจาก ${domain} ENS"
695
}
\ No newline at end of file
res/values/strings_tr.arb
+2
-1
@@ -690,5 +690,6 @@
690
"onramper_option_description": "Birçok ödeme yöntemi ile hızlı bir şekilde kripto satın alın. Çoğu ülkede mevcuttur. Forma ve ücretler değişir.",
691
"default_buy_provider": "Varsayılan Satın Alma Sağlayıcısı",
692
"ask_each_time": "Her seferinde sor",
693
- "buy_provider_unavailable": "Sağlayıcı şu anda kullanılamıyor."
693
+ "buy_provider_unavailable": "Sağlayıcı şu anda kullanılamıyor.",
694
+ "address_from_ens": "Bu adres ${domain} ON ENS'ten"
695
}
\ No newline at end of file
res/values/strings_uk.arb
+2
-1
@@ -692,5 +692,6 @@
692
"onramper_option_description": "Швидко купуйте криптовалюту з багатьма методами оплати. Доступний у більшості країн. Поширення та збори різняться.",
693
"default_buy_provider": "Постачальник покупки за замовчуванням",
694
"ask_each_time": "Запитайте кожен раз",
695
- "buy_provider_unavailable": "В даний час постачальник недоступний."
695
+ "buy_provider_unavailable": "В даний час постачальник недоступний.",
696
+ "address_from_ens": "Ця адреса ${domain} з ENS"
697
}
\ No newline at end of file
res/values/strings_ur.arb
+2
-1
@@ -684,5 +684,6 @@
684
"onramper_option_description": "ادائیگی کے بہت سے طریقوں سے جلدی سے کرپٹو خریدیں۔ زیادہ تر ممالک میں دستیاب ہے۔ پھیلاؤ اور فیس مختلف ہوتی ہے۔",
685
"default_buy_provider": "پہلے سے طے شدہ خریدنے والا",
686
"ask_each_time": "ہر بار پوچھیں",
687
- "buy_provider_unavailable": "فراہم کنندہ فی الحال دستیاب نہیں ہے۔"
687
+ "buy_provider_unavailable": "فراہم کنندہ فی الحال دستیاب نہیں ہے۔",
688
+ "address_from_ens": "یہ پتہ آن ${domain}پر ہے"
689
}
\ No newline at end of file
res/values/strings_yo.arb
+2
-1
@@ -686,5 +686,6 @@
686
"onramper_option_description": "Ni kiakia Ra Crypto pẹlu ọpọlọpọ awọn ọna isanwo. Wa ni ọpọlọpọ awọn orilẹ-ede. Itankale ati awọn idiyele yatọ.",
687
"default_buy_provider": "Aiyipada Ra Olupese",
688
"ask_each_time": "Beere lọwọ kọọkan",
689
- "buy_provider_unavailable": "Olupese lọwọlọwọ ko si."
689
+ "buy_provider_unavailable": "Olupese lọwọlọwọ ko si.",
690
+ "address_from_ens": "Adirẹsi yii ti ${domain} wa ni ens"
691
}
\ No newline at end of file
res/values/strings_zh.arb
+2
-1
@@ -691,5 +691,6 @@
691
"onramper_option_description": "快速使用许多付款方式购买加密货币。在大多数国家 /地区可用。利差和费用各不相同。",
692
"default_buy_provider": "默认购买提供商",
693
"ask_each_time": "每次问",
694
- "buy_provider_unavailable": "提供者目前不可用。"
694
+ "buy_provider_unavailable": "提供者目前不可用。",
695
+ "address_from_ens": "此地址${domain}来自ENS"
696
}
\ No newline at end of file
tool/configure.dart
+42
-33
@@ -18,8 +18,10 @@ Future<void> main(List<String> args) async {
18
await generateMonero(hasMonero);
19
await generateHaven(hasHaven);
20
await generateEthereum(hasEthereum);
21
- await generatePubspec(hasMonero: hasMonero, hasBitcoin: hasBitcoin, hasHaven: hasHaven, hasEthereum: hasEthereum);
22
- await generateWalletTypes(hasMonero: hasMonero, hasBitcoin: hasBitcoin, hasHaven: hasHaven, hasEthereum: hasEthereum);
21
+ await generatePubspec(
22
+ hasMonero: hasMonero, hasBitcoin: hasBitcoin, hasHaven: hasHaven, hasEthereum: hasEthereum);
23
+ await generateWalletTypes(
24
+ hasMonero: hasMonero, hasBitcoin: hasBitcoin, hasHaven: hasHaven, hasEthereum: hasEthereum);
25
}
26
27
Future<void> generateBitcoin(bool hasImplementation) async {
@@ -88,12 +90,12 @@ abstract class Bitcoin {
90
const bitcoinEmptyDefinition = 'Bitcoin? bitcoin;\n';
91
const bitcoinCWDefinition = 'Bitcoin? bitcoin = CWBitcoin();\n';
92
91
- final output = '$bitcoinCommonHeaders\n'
92
- + (hasImplementation ? '$bitcoinCWHeaders\n' : '\n')
93
- + (hasImplementation ? '$bitcoinCwPart\n\n' : '\n')
94
- + (hasImplementation ? bitcoinCWDefinition : bitcoinEmptyDefinition)
95
- + '\n'
96
- + bitcoinContent;
93
+ final output = '$bitcoinCommonHeaders\n' +
94
+ (hasImplementation ? '$bitcoinCWHeaders\n' : '\n') +
95
+ (hasImplementation ? '$bitcoinCwPart\n\n' : '\n') +
96
+ (hasImplementation ? bitcoinCWDefinition : bitcoinEmptyDefinition) +
97
+ '\n' +
98
+ bitcoinContent;
99
100
if (outputFile.existsSync()) {
101
await outputFile.delete();
@@ -268,12 +270,12 @@ abstract class MoneroAccountList {
270
const moneroEmptyDefinition = 'Monero? monero;\n';
271
const moneroCWDefinition = 'Monero? monero = CWMonero();\n';
272
271
- final output = '$moneroCommonHeaders\n'
272
- + (hasImplementation ? '$moneroCWHeaders\n' : '\n')
273
- + (hasImplementation ? '$moneroCwPart\n\n' : '\n')
274
- + (hasImplementation ? moneroCWDefinition : moneroEmptyDefinition)
275
- + '\n'
276
- + moneroContent;
273
+ final output = '$moneroCommonHeaders\n' +
274
+ (hasImplementation ? '$moneroCWHeaders\n' : '\n') +
275
+ (hasImplementation ? '$moneroCwPart\n\n' : '\n') +
276
+ (hasImplementation ? moneroCWDefinition : moneroEmptyDefinition) +
277
+ '\n' +
278
+ moneroContent;
279
280
if (outputFile.existsSync()) {
281
await outputFile.delete();
@@ -283,7 +285,6 @@ abstract class MoneroAccountList {
285
}
286
287
Future<void> generateHaven(bool hasImplementation) async {
286
-
288
final outputFile = File(havenOutputPath);
289
const havenCommonHeaders = """
290
import 'package:mobx/mobx.dart';
@@ -448,12 +449,12 @@ abstract class HavenAccountList {
449
const havenEmptyDefinition = 'Haven? haven;\n';
450
const havenCWDefinition = 'Haven? haven = CWHaven();\n';
451
451
- final output = '$havenCommonHeaders\n'
452
- + (hasImplementation ? '$havenCWHeaders\n' : '\n')
453
- + (hasImplementation ? '$havenCwPart\n\n' : '\n')
454
- + (hasImplementation ? havenCWDefinition : havenEmptyDefinition)
455
- + '\n'
456
- + havenContent;
452
+ final output = '$havenCommonHeaders\n' +
453
+ (hasImplementation ? '$havenCWHeaders\n' : '\n') +
454
+ (hasImplementation ? '$havenCwPart\n\n' : '\n') +
455
+ (hasImplementation ? havenCWDefinition : havenEmptyDefinition) +
456
+ '\n' +
457
+ havenContent;
458
459
if (outputFile.existsSync()) {
460
await outputFile.delete();
@@ -463,7 +464,6 @@ abstract class HavenAccountList {
464
}
465
466
Future<void> generateEthereum(bool hasImplementation) async {
466
-
467
final outputFile = File(ethereumOutputPath);
468
const ethereumCommonHeaders = """
469
import 'package:cake_wallet/view_model/send/output.dart';
@@ -525,18 +525,19 @@ 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);
529
}
530
""";
531
532
const ethereumEmptyDefinition = 'Ethereum? ethereum;\n';
533
const ethereumCWDefinition = 'Ethereum? ethereum = CWEthereum();\n';
534
534
- final output = '$ethereumCommonHeaders\n'
535
- + (hasImplementation ? '$ethereumCWHeaders\n' : '\n')
536
- + (hasImplementation ? '$ethereumCwPart\n\n' : '\n')
537
- + (hasImplementation ? ethereumCWDefinition : ethereumEmptyDefinition)
538
- + '\n'
539
- + ethereumContent;
535
+ final output = '$ethereumCommonHeaders\n' +
536
+ (hasImplementation ? '$ethereumCWHeaders\n' : '\n') +
537
+ (hasImplementation ? '$ethereumCwPart\n\n' : '\n') +
538
+ (hasImplementation ? ethereumCWDefinition : ethereumEmptyDefinition) +
539
+ '\n' +
540
+ ethereumContent;
541
542
if (outputFile.existsSync()) {
543
await outputFile.delete();
@@ -545,8 +546,12 @@ abstract class Ethereum {
546
await outputFile.writeAsString(output);
547
}
548
548
-Future<void> generatePubspec({required bool hasMonero, required bool hasBitcoin, required bool hasHaven, required bool hasEthereum}) async {
549
- const cwCore = """
549
+Future<void> generatePubspec(
550
+ {required bool hasMonero,
551
+ required bool hasBitcoin,
552
+ required bool hasHaven,
553
+ required bool hasEthereum}) async {
554
+ const cwCore = """
555
cw_core:
556
path: ./cw_core
557
""";
@@ -598,7 +603,7 @@ Future<void> generatePubspec({required bool hasMonero, required bool hasBitcoin,
603
inputLines.insertAll(dependenciesIndex + 1, outputLines);
604
final outputContent = inputLines.join('\n');
605
final outputFile = File(pubspecOutputPath);
601
-
606
+
607
if (outputFile.existsSync()) {
608
await outputFile.delete();
609
}
@@ -606,9 +611,13 @@ Future<void> generatePubspec({required bool hasMonero, required bool hasBitcoin,
611
await outputFile.writeAsString(outputContent);
612
}
613
609
-Future<void> generateWalletTypes({required bool hasMonero, required bool hasBitcoin, required bool hasHaven, required bool hasEthereum}) async {
614
+Future<void> generateWalletTypes(
615
+ {required bool hasMonero,
616
+ required bool hasBitcoin,
617
+ required bool hasHaven,
618
+ required bool hasEthereum}) async {
619
final walletTypesFile = File(walletTypesPath);
611
-
620
+
621
if (walletTypesFile.existsSync()) {
622
await walletTypesFile.delete();
623
}