fix nano sending, update restore page wording, and other minor fixes (#1130)
* fix nano sending, update restore page wording, and other minor fixes * fix bch address parsing * minor code enhancement [skip ci] * Register the main secure storage as the long lived instance of secure storage throughout the app session --------- Co-authored-by: Serhii <borodenko.sv@gmail.com> Co-authored-by: OmarHatem <omarh.ismail1@gmail.com>
Matthew Fosse committed
Oct 17, 2023 at 11:59 UTC
98a9edc656b98ea4373a7265c9a973780b903c87
34 files changed
+160
-84
cw_nano/lib/nano_wallet_creation_credentials.dart
+7
-6
@@ -10,13 +10,11 @@ class NanoRestoreWalletFromSeedCredentials extends WalletCredentials {
10
NanoRestoreWalletFromSeedCredentials({
11
required String name,
12
required this.mnemonic,
13
- int height = 0,
13
String? password,
14
DerivationType? derivationType,
15
}) : super(
16
name: name,
17
password: password,
19
- height: height,
18
derivationType: derivationType,
19
);
20
@@ -33,9 +31,12 @@ class NanoRestoreWalletFromKeysCredentials extends WalletCredentials {
31
required String name,
32
required String password,
33
required this.seedKey,
36
- this.derivationType,
37
- }) : super(name: name, password: password);
34
+ DerivationType? derivationType,
35
+ }) : super(
36
+ name: name,
37
+ password: password,
38
+ derivationType: derivationType,
39
+ );
40
41
final String seedKey;
40
- final DerivationType? derivationType;
41
-}
\ No newline at end of file
42
+}
lib/di.dart
+2
-1
@@ -248,6 +248,7 @@ Future<void> setup({
248
required Box<Order> ordersSource,
249
required Box<UnspentCoinsInfo> unspentCoinsInfoSource,
250
required Box<AnonpayInvoiceInfo> anonpayInvoiceInfoSource,
251
+ required FlutterSecureStorage secureStorage,
252
}) async {
253
_walletInfoSource = walletInfoSource;
254
_nodeSource = nodeSource;
@@ -289,7 +290,7 @@ Future<void> setup({
290
getIt.registerFactory<Box<Node>>(() => _nodeSource);
291
getIt.registerFactory<Box<Node>>(() => _powNodeSource, instanceName: Node.boxName + "pow");
292
292
- getIt.registerSingleton<FlutterSecureStorage>(FlutterSecureStorage());
293
+ getIt.registerSingleton<FlutterSecureStorage>(secureStorage);
294
getIt.registerSingleton(AuthenticationStore());
295
getIt.registerSingleton<WalletListStore>(WalletListStore());
296
getIt.registerSingleton(NodeListStoreBase.instance);
lib/entities/parse_address_from_domain.dart
+7
-1
@@ -46,7 +46,13 @@ class AddressResolver {
46
}
47
48
final match = RegExp(addressPattern).firstMatch(raw);
49
- return match?.group(0)?.replaceAll(RegExp('[^0-9a-zA-Z]'), '');
49
+ return match?.group(0)?.replaceAllMapped(RegExp('[^0-9a-zA-Z]|bitcoincash:|nano_'), (Match match) {
50
+ String group = match.group(0)!;
51
+ if (group.startsWith('bitcoincash:') || group.startsWith('nano_')) {
52
+ return group;
53
+ }
54
+ return '';
55
+ });
56
}
57
58
Future<ParsedAddress> resolve(String text, String ticker) async {
lib/main.dart
+3
-2
@@ -163,7 +163,7 @@ Future<void> initializeAppConfigs() async {
163
secureStorage: secureStorage,
164
anonpayInvoiceInfo: anonpayInvoiceInfo,
165
initialMigrationVersion: 23);
166
- }
166
+}
167
168
Future<void> initialSetup(
169
{required SharedPreferences sharedPreferences,
@@ -202,7 +202,8 @@ Future<void> initialSetup(
202
transactionDescriptionBox: transactionDescriptions,
203
ordersSource: ordersSource,
204
anonpayInvoiceInfoSource: anonpayInvoiceInfo,
205
- unspentCoinsInfoSource: unspentCoinsInfoSource);
205
+ unspentCoinsInfoSource: unspentCoinsInfoSource,
206
+ secureStorage: secureStorage);
207
await bootstrap(navigatorKey);
208
monero?.onStartup();
209
}
lib/nano/cw_nano.dart
+15
-3
@@ -406,6 +406,13 @@ class CWNanoUtil extends NanoUtil {
406
late String publicAddress;
407
408
if (seedKey != null) {
409
+ if (seedKey.length == 64) {
410
+ try {
411
+ mnemonic = nanoUtil!.seedToMnemonic(seedKey);
412
+ } catch (e) {
413
+ print("not a valid 'nano' seed key");
414
+ }
415
+ }
416
if (derivationType == DerivationType.bip39) {
417
publicAddress = await hdSeedToAddress(seedKey, 0);
418
} else if (derivationType == DerivationType.nano) {
@@ -429,7 +436,8 @@ class CWNanoUtil extends NanoUtil {
436
437
AccountInfoResponse? accountInfo = await nanoClient.getAccountInfo(publicAddress);
438
if (accountInfo == null) {
432
- accountInfo = AccountInfoResponse(frontier: "", balance: "0", representative: "", confirmationHeight: 0);
439
+ accountInfo = AccountInfoResponse(
440
+ frontier: "", balance: "0", representative: "", confirmationHeight: 0);
441
}
442
accountInfo.address = publicAddress;
443
return accountInfo;
@@ -449,7 +457,11 @@ class CWNanoUtil extends NanoUtil {
457
if (seedKey?.length == 128) {
458
return [DerivationType.bip39];
459
} else if (seedKey?.length == 64) {
452
- return [DerivationType.nano];
460
+ try {
461
+ mnemonic = nanoUtil!.seedToMnemonic(seedKey!);
462
+ } catch (e) {
463
+ print("not a valid 'nano' seed key");
464
+ }
465
}
466
467
late String publicAddressStandard;
@@ -503,7 +515,7 @@ class CWNanoUtil extends NanoUtil {
515
// we don't know for sure:
516
return [DerivationType.nano, DerivationType.bip39];
517
} catch (e) {
506
- return [DerivationType.unknown];
518
+ return [DerivationType.nano, DerivationType.bip39];
519
}
520
}
521
}
lib/src/screens/restore/wallet_restore_from_keys_form.dart
+8
-1
@@ -124,9 +124,16 @@ class WalletRestoreFromKeysFromState extends State<WalletRestoreFromKeysFrom> {
124
125
Widget _restoreFromKeysFormFields() {
126
if (widget.displayPrivateKeyField) {
127
+ // the term "private key" isn't actually what we're accepting here, and it's confusing to
128
+ // users of the nano community, what this form actually accepts (when importing for nano) is a nano seed in it's hex form, referred to in code as a "seed key"
129
+ // so we should change the placeholder text to reflect this
130
+ // supporting actual nano private keys is possible, but it's super niche in the nano community / they're not really used
131
+
132
+ bool nanoBased = widget.walletRestoreViewModel.type == WalletType.nano ||
133
+ widget.walletRestoreViewModel.type == WalletType.banano;
134
return AddressTextField(
135
controller: privateKeyController,
129
- placeholder: S.of(context).private_key,
136
+ placeholder: nanoBased ? S.of(context).seed_key : S.of(context).private_key,
137
options: [AddressTextFieldOption.paste],
138
buttonColor: Theme.of(context).hintColor,
139
onPushPasteButton: (_) {
lib/src/widgets/seed_widget.dart
+2
-1
@@ -1,3 +1,4 @@
1
+import 'package:cake_wallet/generated/i18n.dart';
2
import 'package:cake_wallet/themes/extensions/cake_text_theme.dart';
3
import 'package:cw_core/wallet_type.dart';
4
import 'package:cake_wallet/src/widgets/validable_annotated_editable_text.dart';
@@ -75,7 +76,7 @@ class SeedWidgetState extends State<SeedWidget> {
76
Positioned(
77
top: 10,
78
left: 0,
78
- child: Text('Enter your seed',
79
+ child: Text(S.of(context).enter_seed_phrase,
80
style: TextStyle(
81
fontSize: 16.0, color: Theme.of(context).hintColor))),
82
Padding(
lib/view_model/send/send_view_model.dart
+12
-17
@@ -185,15 +185,15 @@ abstract class SendViewModelBase extends WalletChangeListenerViewModel with Stor
185
@computed
186
bool get hasCoinControl =>
187
wallet.type == WalletType.bitcoin ||
188
- wallet.type == WalletType.litecoin ||
189
- wallet.type == WalletType.monero ||
190
- wallet.type == WalletType.bitcoinCash;
188
+ wallet.type == WalletType.litecoin ||
189
+ wallet.type == WalletType.monero ||
190
+ wallet.type == WalletType.bitcoinCash;
191
192
@computed
193
bool get isElectrumWallet =>
194
wallet.type == WalletType.bitcoin ||
195
- wallet.type == WalletType.litecoin ||
196
- wallet.type == WalletType.bitcoinCash;
195
+ wallet.type == WalletType.litecoin ||
196
+ wallet.type == WalletType.bitcoinCash;
197
198
@computed
199
bool get hasFees => wallet.type != WalletType.nano && wallet.type != WalletType.banano;
@@ -281,7 +281,6 @@ abstract class SendViewModelBase extends WalletChangeListenerViewModel with Stor
281
List<bool> conditionsList = [];
282
283
for (var output in outputs) {
284
-
284
final show = checkThroughChecksToDisplayTOTP(output.extractedAddress);
285
conditionsList.add(show);
286
}
@@ -350,31 +349,27 @@ abstract class SendViewModelBase extends WalletChangeListenerViewModel with Stor
349
Object _credentials() {
350
final priority = _settingsStore.priority[wallet.type];
351
353
- if (priority == null) throw Exception('Priority is null for wallet type: ${wallet.type}');
352
+ if (priority == null && wallet.type != WalletType.nano) {
353
+ throw Exception('Priority is null for wallet type: ${wallet.type}');
354
+ }
355
356
switch (wallet.type) {
357
case WalletType.bitcoin:
358
case WalletType.litecoin:
359
case WalletType.bitcoinCash:
359
- return bitcoin!.createBitcoinTransactionCredentials(outputs, priority: priority);
360
+ return bitcoin!.createBitcoinTransactionCredentials(outputs, priority: priority!);
361
362
case WalletType.monero:
363
return monero!
363
- .createMoneroTransactionCreationCredentials(outputs: outputs, priority: priority);
364
+ .createMoneroTransactionCreationCredentials(outputs: outputs, priority: priority!);
365
366
case WalletType.haven:
367
return haven!.createHavenTransactionCreationCredentials(
367
- outputs: outputs, priority: priority, assetType: selectedCryptoCurrency.title);
368
+ outputs: outputs, priority: priority!, assetType: selectedCryptoCurrency.title);
369
370
case WalletType.ethereum:
370
- final priority = _settingsStore.priority[wallet.type];
371
-
372
- if (priority == null) {
373
- throw Exception('Priority is null for wallet type: ${wallet.type}');
374
- }
375
-
371
return ethereum!.createEthereumTransactionCredentials(outputs,
377
- priority: priority, currency: selectedCryptoCurrency);
372
+ priority: priority!, currency: selectedCryptoCurrency);
373
case WalletType.nano:
374
return nano!.createNanoTransactionCredentials(outputs);
375
default:
res/values/strings_ar.arb
+4
-2
@@ -717,5 +717,7 @@
717
"message": "ﺔﻟﺎﺳﺭ",
718
"do_not_have_enough_gas_asset": "ليس لديك ما يكفي من ${currency} لإجراء معاملة وفقًا لشروط شبكة blockchain الحالية. أنت بحاجة إلى المزيد من ${currency} لدفع رسوم شبكة blockchain، حتى لو كنت ترسل أصلًا مختلفًا.",
719
"totp_auth_url": "TOTP ﺔﻗﺩﺎﺼﻤﻟ URL ﻥﺍﻮﻨﻋ",
720
- "awaitDAppProcessing": ".ﺔﺠﻟﺎﻌﻤﻟﺍ ﻦﻣ dApp ﻲﻬﺘﻨﻳ ﻰﺘﺣ ﺭﺎﻈﺘﻧﻻﺍ ﻰﺟﺮﻳ"
721
-}
720
+ "awaitDAppProcessing": ".ﺔﺠﻟﺎﻌﻤﻟﺍ ﻦﻣ dApp ﻲﻬﺘﻨﻳ ﻰﺘﺣ ﺭﺎﻈﺘﻧﻻﺍ ﻰﺟﺮﻳ",
721
+ "seed_key": "مفتاح البذور",
722
+ "enter_seed_phrase": "أدخل عبارة البذور الخاصة بك"
723
+}
\ No newline at end of file
res/values/strings_bg.arb
+4
-2
@@ -713,5 +713,7 @@
713
"message": "Съобщение",
714
"do_not_have_enough_gas_asset": "Нямате достатъчно ${currency}, за да извършите транзакция с текущите условия на блокчейн мрежата. Имате нужда от повече ${currency}, за да платите таксите за блокчейн мрежа, дори ако изпращате различен актив.",
715
"totp_auth_url": "TOTP AUTH URL",
716
- "awaitDAppProcessing": "Моля, изчакайте dApp да завърши обработката."
717
-}
716
+ "awaitDAppProcessing": "Моля, изчакайте dApp да завърши обработката.",
717
+ "seed_key": "Ключ за семена",
718
+ "enter_seed_phrase": "Въведете вашата фраза за семена"
719
+}
\ No newline at end of file
res/values/strings_cs.arb
+4
-2
@@ -713,5 +713,7 @@
713
"message": "Zpráva",
714
"do_not_have_enough_gas_asset": "Nemáte dostatek ${currency} k provedení transakce s aktuálními podmínkami blockchainové sítě. K placení poplatků za blockchainovou síť potřebujete více ${currency}, i když posíláte jiné aktivum.",
715
"totp_auth_url": "URL AUTH TOTP",
716
- "awaitDAppProcessing": "Počkejte, až dApp dokončí zpracování."
717
-}
716
+ "awaitDAppProcessing": "Počkejte, až dApp dokončí zpracování.",
717
+ "seed_key": "Klíč semen",
718
+ "enter_seed_phrase": "Zadejte svou frázi semen"
719
+}
\ No newline at end of file
res/values/strings_de.arb
+4
-2
@@ -721,5 +721,7 @@
721
"message": "Nachricht",
722
"do_not_have_enough_gas_asset": "Sie verfügen nicht über genügend ${currency}, um eine Transaktion unter den aktuellen Bedingungen des Blockchain-Netzwerks durchzuführen. Sie benötigen mehr ${currency}, um die Gebühren für das Blockchain-Netzwerk zu bezahlen, auch wenn Sie einen anderen Vermögenswert senden.",
723
"totp_auth_url": "TOTP-Auth-URL",
724
- "awaitDAppProcessing": "Bitte warten Sie, bis die dApp die Verarbeitung abgeschlossen hat."
725
-}
724
+ "awaitDAppProcessing": "Bitte warten Sie, bis die dApp die Verarbeitung abgeschlossen hat.",
725
+ "seed_key": "Samenschlüssel",
726
+ "enter_seed_phrase": "Geben Sie Ihre Samenphrase ein"
727
+}
\ No newline at end of file
res/values/strings_en.arb
+4
-2
@@ -722,5 +722,7 @@
722
"message": "Message",
723
"do_not_have_enough_gas_asset": "You do not have enough ${currency} to make a transaction with the current blockchain network conditions. You need more ${currency} to pay blockchain network fees, even if you are sending a different asset.",
724
"totp_auth_url": "TOTP AUTH URL",
725
- "awaitDAppProcessing": "Kindly wait for the dApp to finish processing."
726
-}
725
+ "awaitDAppProcessing": "Kindly wait for the dApp to finish processing.",
726
+ "seed_key": "Seed key",
727
+ "enter_seed_phrase": "Enter your seed phrase"
728
+}
\ No newline at end of file
res/values/strings_es.arb
+4
-2
@@ -721,5 +721,7 @@
721
"message": "Mensaje",
722
"do_not_have_enough_gas_asset": "No tienes suficiente ${currency} para realizar una transacción con las condiciones actuales de la red blockchain. Necesita más ${currency} para pagar las tarifas de la red blockchain, incluso si envía un activo diferente.",
723
"totp_auth_url": "URL de autenticación TOTP",
724
- "awaitDAppProcessing": "Espere a que la dApp termine de procesarse."
725
-}
724
+ "awaitDAppProcessing": "Espere a que la dApp termine de procesarse.",
725
+ "seed_key": "Llave de semilla",
726
+ "enter_seed_phrase": "Ingrese su frase de semillas"
727
+}
\ No newline at end of file
res/values/strings_fr.arb
+4
-2
@@ -721,5 +721,7 @@
721
"message": "Message",
722
"do_not_have_enough_gas_asset": "Vous n'avez pas assez de ${currency} pour effectuer une transaction avec les conditions actuelles du réseau blockchain. Vous avez besoin de plus de ${currency} pour payer les frais du réseau blockchain, même si vous envoyez un actif différent.",
723
"totp_auth_url": "URL D'AUTORISATION TOTP",
724
- "awaitDAppProcessing": "Veuillez attendre que le dApp termine le traitement."
725
-}
724
+ "awaitDAppProcessing": "Veuillez attendre que le dApp termine le traitement.",
725
+ "seed_key": "Clé de graines",
726
+ "enter_seed_phrase": "Entrez votre phrase de semence"
727
+}
\ No newline at end of file
res/values/strings_ha.arb
+4
-2
@@ -699,5 +699,7 @@
699
"message": "Sako",
700
"do_not_have_enough_gas_asset": "Ba ku da isassun ${currency} don yin ma'amala tare da yanayin cibiyar sadarwar blockchain na yanzu. Kuna buƙatar ƙarin ${currency} don biyan kuɗaɗen cibiyar sadarwar blockchain, koda kuwa kuna aika wata kadara daban.",
701
"totp_auth_url": "TOTP AUTH URL",
702
- "awaitDAppProcessing": "Da fatan za a jira dApp ya gama aiki."
703
-}
702
+ "awaitDAppProcessing": "Da fatan za a jira dApp ya gama aiki.",
703
+ "seed_key": "Maɓallin iri",
704
+ "enter_seed_phrase": "Shigar da Sert Sentarku"
705
+}
\ No newline at end of file
res/values/strings_hi.arb
+4
-2
@@ -721,5 +721,7 @@
721
"message": "संदेश",
722
"do_not_have_enough_gas_asset": "वर्तमान ब्लॉकचेन नेटवर्क स्थितियों में लेनदेन करने के लिए आपके पास पर्याप्त ${currency} नहीं है। ब्लॉकचेन नेटवर्क शुल्क का भुगतान करने के लिए आपको अधिक ${currency} की आवश्यकता है, भले ही आप एक अलग संपत्ति भेज रहे हों।",
723
"totp_auth_url": "TOTP प्रामाणिक यूआरएल",
724
- "awaitDAppProcessing": "कृपया डीएपी की प्रोसेसिंग पूरी होने तक प्रतीक्षा करें।"
725
-}
724
+ "awaitDAppProcessing": "कृपया डीएपी की प्रोसेसिंग पूरी होने तक प्रतीक्षा करें।",
725
+ "seed_key": "बीज कुंजी",
726
+ "enter_seed_phrase": "अपना बीज वाक्यांश दर्ज करें"
727
+}
\ No newline at end of file
res/values/strings_hr.arb
+4
-2
@@ -719,5 +719,7 @@
719
"message": "Poruka",
720
"do_not_have_enough_gas_asset": "Nemate dovoljno ${currency} da izvršite transakciju s trenutačnim uvjetima blockchain mreže. Trebate više ${currency} da platite naknade za blockchain mrežu, čak i ako šaljete drugu imovinu.",
721
"totp_auth_url": "TOTP AUTH URL",
722
- "awaitDAppProcessing": "Molimo pričekajte da dApp završi obradu."
723
-}
722
+ "awaitDAppProcessing": "Molimo pričekajte da dApp završi obradu.",
723
+ "seed_key": "Sjemenski ključ",
724
+ "enter_seed_phrase": "Unesite svoju sjemensku frazu"
725
+}
\ No newline at end of file
res/values/strings_id.arb
+4
-2
@@ -709,5 +709,7 @@
709
"message": "Pesan",
710
"do_not_have_enough_gas_asset": "Anda tidak memiliki cukup ${currency} untuk melakukan transaksi dengan kondisi jaringan blockchain saat ini. Anda memerlukan lebih banyak ${currency} untuk membayar biaya jaringan blockchain, meskipun Anda mengirimkan aset yang berbeda.",
711
"totp_auth_url": "URL Otentikasi TOTP",
712
- "awaitDAppProcessing": "Mohon tunggu hingga dApp menyelesaikan pemrosesan."
713
-}
712
+ "awaitDAppProcessing": "Mohon tunggu hingga dApp menyelesaikan pemrosesan.",
713
+ "seed_key": "Kunci benih",
714
+ "enter_seed_phrase": "Masukkan frasa benih Anda"
715
+}
\ No newline at end of file
res/values/strings_it.arb
+4
-2
@@ -721,5 +721,7 @@
721
"message": "Messaggio",
722
"do_not_have_enough_gas_asset": "Non hai abbastanza ${currency} per effettuare una transazione con le attuali condizioni della rete blockchain. Hai bisogno di più ${currency} per pagare le commissioni della rete blockchain, anche se stai inviando una risorsa diversa.",
723
"totp_auth_url": "URL DI AUT. TOTP",
724
- "awaitDAppProcessing": "Attendi gentilmente che la dApp termini l'elaborazione."
725
-}
724
+ "awaitDAppProcessing": "Attendi gentilmente che la dApp termini l'elaborazione.",
725
+ "seed_key": "Chiave di semi",
726
+ "enter_seed_phrase": "Inserisci la tua frase di semi"
727
+}
\ No newline at end of file
res/values/strings_ja.arb
+4
-2
@@ -721,5 +721,7 @@
721
"message": "メッセージ",
722
"do_not_have_enough_gas_asset": "現在のブロックチェーン ネットワークの状況では、トランザクションを行うのに十分な ${currency} がありません。別のアセットを送信する場合でも、ブロックチェーン ネットワーク料金を支払うにはさらに ${currency} が必要です。",
723
"totp_auth_url": "TOTP認証URL",
724
- "awaitDAppProcessing": "dAppの処理が完了するまでお待ちください。"
725
-}
724
+ "awaitDAppProcessing": "dAppの処理が完了するまでお待ちください。",
725
+ "seed_key": "シードキー",
726
+ "enter_seed_phrase": "シードフレーズを入力してください"
727
+}
\ No newline at end of file
res/values/strings_ko.arb
+4
-2
@@ -719,5 +719,7 @@
719
"message": "메시지",
720
"do_not_have_enough_gas_asset": "현재 블록체인 네트워크 조건으로 거래를 하기에는 ${currency}이(가) 충분하지 않습니다. 다른 자산을 보내더라도 블록체인 네트워크 수수료를 지불하려면 ${currency}가 더 필요합니다.",
721
"totp_auth_url": "TOTP 인증 URL",
722
- "awaitDAppProcessing": "dApp이 처리를 마칠 때까지 기다려주세요."
723
-}
722
+ "awaitDAppProcessing": "dApp이 처리를 마칠 때까지 기다려주세요.",
723
+ "seed_key": "시드 키",
724
+ "enter_seed_phrase": "시드 문구를 입력하십시오"
725
+}
\ No newline at end of file
res/values/strings_my.arb
+4
-2
@@ -719,5 +719,7 @@
719
"message": "မက်ဆေ့ချ်",
720
"do_not_have_enough_gas_asset": "လက်ရှိ blockchain ကွန်ရက်အခြေအနေများနှင့် အရောင်းအဝယ်ပြုလုပ်ရန် သင့်တွင် ${currency} လုံလောက်မှုမရှိပါ။ သင်သည် မတူညီသော ပိုင်ဆိုင်မှုတစ်ခုကို ပေးပို့နေသော်လည်း blockchain ကွန်ရက်အခကြေးငွေကို ပေးဆောင်ရန် သင်သည် နောက်ထပ် ${currency} လိုအပ်ပါသည်။",
721
"totp_auth_url": "TOTP AUTH URL",
722
- "awaitDAppProcessing": "ကျေးဇူးပြု၍ dApp ကို စီမံလုပ်ဆောင်ခြင်း အပြီးသတ်ရန် စောင့်ပါ။"
723
-}
722
+ "awaitDAppProcessing": "ကျေးဇူးပြု၍ dApp ကို စီမံလုပ်ဆောင်ခြင်း အပြီးသတ်ရန် စောင့်ပါ။",
723
+ "seed_key": "မျိုးစေ့သော့",
724
+ "enter_seed_phrase": "သင့်ရဲ့မျိုးစေ့စကားစုကိုရိုက်ထည့်ပါ"
725
+}
\ No newline at end of file
res/values/strings_nl.arb
+4
-2
@@ -721,5 +721,7 @@
721
"message": "Bericht",
722
"do_not_have_enough_gas_asset": "U heeft niet genoeg ${currency} om een transactie uit te voeren met de huidige blockchain-netwerkomstandigheden. U heeft meer ${currency} nodig om blockchain-netwerkkosten te betalen, zelfs als u een ander item verzendt.",
723
"totp_auth_url": "TOTP AUTH-URL",
724
- "awaitDAppProcessing": "Wacht tot de dApp klaar is met verwerken."
725
-}
724
+ "awaitDAppProcessing": "Wacht tot de dApp klaar is met verwerken.",
725
+ "seed_key": "Zaadsleutel",
726
+ "enter_seed_phrase": "Voer uw zaadzin in"
727
+}
\ No newline at end of file
res/values/strings_pl.arb
+4
-2
@@ -721,5 +721,7 @@
721
"message": "Wiadomość",
722
"do_not_have_enough_gas_asset": "Nie masz wystarczającej ilości ${currency}, aby dokonać transakcji przy bieżących warunkach sieci blockchain. Potrzebujesz więcej ${currency}, aby uiścić opłaty za sieć blockchain, nawet jeśli wysyłasz inny zasób.",
723
"totp_auth_url": "Adres URL TOTP AUTH",
724
- "awaitDAppProcessing": "Poczekaj, aż dApp zakończy przetwarzanie."
725
-}
724
+ "awaitDAppProcessing": "Poczekaj, aż dApp zakończy przetwarzanie.",
725
+ "seed_key": "Klucz nasion",
726
+ "enter_seed_phrase": "Wprowadź swoją frazę nasienną"
727
+}
\ No newline at end of file
res/values/strings_pt.arb
+4
-2
@@ -720,5 +720,7 @@
720
"message": "Mensagem",
721
"do_not_have_enough_gas_asset": "Você não tem ${currency} suficiente para fazer uma transação com as condições atuais da rede blockchain. Você precisa de mais ${currency} para pagar as taxas da rede blockchain, mesmo se estiver enviando um ativo diferente.",
722
"totp_auth_url": "URL de autenticação TOTP",
723
- "awaitDAppProcessing": "Aguarde até que o dApp termine o processamento."
724
-}
723
+ "awaitDAppProcessing": "Aguarde até que o dApp termine o processamento.",
724
+ "seed_key": "Chave de semente",
725
+ "enter_seed_phrase": "Digite sua frase de semente"
726
+}
\ No newline at end of file
res/values/strings_ru.arb
+4
-2
@@ -721,5 +721,7 @@
721
"message": "Сообщение",
722
"do_not_have_enough_gas_asset": "У вас недостаточно ${currency} для совершения транзакции при текущих условиях сети блокчейн. Вам нужно больше ${currency} для оплаты комиссий за сеть блокчейна, даже если вы отправляете другой актив.",
723
"totp_auth_url": "URL-адрес TOTP-АВТОРИЗАЦИИ",
724
- "awaitDAppProcessing": "Пожалуйста, подождите, пока dApp завершит обработку."
725
-}
724
+ "awaitDAppProcessing": "Пожалуйста, подождите, пока dApp завершит обработку.",
725
+ "seed_key": "Ключ семян",
726
+ "enter_seed_phrase": "Введите свою семенную фразу"
727
+}
\ No newline at end of file
res/values/strings_th.arb
+4
-2
@@ -719,5 +719,7 @@
719
"message": "ข้อความ",
720
"do_not_have_enough_gas_asset": "คุณมี ${currency} ไม่เพียงพอที่จะทำธุรกรรมกับเงื่อนไขเครือข่ายบล็อคเชนในปัจจุบัน คุณต้องมี ${currency} เพิ่มขึ้นเพื่อชำระค่าธรรมเนียมเครือข่ายบล็อคเชน แม้ว่าคุณจะส่งสินทรัพย์อื่นก็ตาม",
721
"totp_auth_url": "URL การตรวจสอบสิทธิ์ TOTP",
722
- "awaitDAppProcessing": "โปรดรอให้ dApp ประมวลผลเสร็จสิ้น"
723
-}
722
+ "awaitDAppProcessing": "โปรดรอให้ dApp ประมวลผลเสร็จสิ้น",
723
+ "seed_key": "คีย์เมล็ดพันธุ์",
724
+ "enter_seed_phrase": "ป้อนวลีเมล็ดพันธุ์ของคุณ"
725
+}
\ No newline at end of file
res/values/strings_tl.arb
+4
-2
@@ -716,5 +716,7 @@
716
"message": "Mensahe",
717
"do_not_have_enough_gas_asset": "Wala kang sapat na ${currency} para gumawa ng transaksyon sa kasalukuyang kundisyon ng network ng blockchain. Kailangan mo ng higit pang ${currency} upang magbayad ng mga bayarin sa network ng blockchain, kahit na nagpapadala ka ng ibang asset.",
718
"totp_auth_url": "TOTP AUTH URL",
719
- "awaitDAppProcessing": "Pakihintay na matapos ang pagproseso ng dApp."
720
-}
719
+ "awaitDAppProcessing": "Pakihintay na matapos ang pagproseso ng dApp.",
720
+ "seed_key": "Seed Key",
721
+ "enter_seed_phrase": "Ipasok ang iyong pariralang binhi"
722
+}
\ No newline at end of file
res/values/strings_tr.arb
+4
-2
@@ -719,5 +719,7 @@
719
"message": "İleti",
720
"do_not_have_enough_gas_asset": "Mevcut blockchain ağ koşullarıyla işlem yapmak için yeterli ${currency} paranız yok. Farklı bir varlık gönderiyor olsanız bile blockchain ağ ücretlerini ödemek için daha fazla ${currency} miktarına ihtiyacınız var.",
721
"totp_auth_url": "TOTP YETKİ URL'si",
722
- "awaitDAppProcessing": "Lütfen dApp'in işlemeyi bitirmesini bekleyin."
723
-}
722
+ "awaitDAppProcessing": "Lütfen dApp'in işlemeyi bitirmesini bekleyin.",
723
+ "seed_key": "Tohum",
724
+ "enter_seed_phrase": "Tohum ifadenizi girin"
725
+}
\ No newline at end of file
res/values/strings_uk.arb
+4
-2
@@ -721,5 +721,7 @@
721
"message": "повідомлення",
722
"do_not_have_enough_gas_asset": "У вас недостатньо ${currency}, щоб здійснити трансакцію з поточними умовами мережі блокчейн. Вам потрібно більше ${currency}, щоб сплатити комісію мережі блокчейн, навіть якщо ви надсилаєте інший актив.",
723
"totp_auth_url": "TOTP AUTH URL",
724
- "awaitDAppProcessing": "Зачекайте, доки dApp завершить обробку."
725
-}
724
+ "awaitDAppProcessing": "Зачекайте, доки dApp завершить обробку.",
725
+ "seed_key": "Насіннєвий ключ",
726
+ "enter_seed_phrase": "Введіть свою насіннєву фразу"
727
+}
\ No newline at end of file
res/values/strings_ur.arb
+4
-2
@@ -713,5 +713,7 @@
713
"message": "ﻡﺎﻐﯿﭘ",
714
"do_not_have_enough_gas_asset": "آپ کے پاس موجودہ بلاکچین نیٹ ورک کی شرائط کے ساتھ لین دین کرنے کے لیے کافی ${currency} نہیں ہے۔ آپ کو بلاکچین نیٹ ورک کی فیس ادا کرنے کے لیے مزید ${currency} کی ضرورت ہے، چاہے آپ کوئی مختلف اثاثہ بھیج رہے ہوں۔",
715
"totp_auth_url": "TOTP AUTH URL",
716
- "awaitDAppProcessing": "۔ﮟﯾﺮﮐ ﺭﺎﻈﺘﻧﺍ ﺎﮐ ﮯﻧﻮﮨ ﻞﻤﮑﻣ ﮓﻨﺴﯿﺳﻭﺮﭘ ﮯﮐ dApp ﻡﺮﮐ ﮦﺍﺮﺑ"
717
-}
716
+ "awaitDAppProcessing": "۔ﮟﯾﺮﮐ ﺭﺎﻈﺘﻧﺍ ﺎﮐ ﮯﻧﻮﮨ ﻞﻤﮑﻣ ﮓﻨﺴﯿﺳﻭﺮﭘ ﮯﮐ dApp ﻡﺮﮐ ﮦﺍﺮﺑ",
717
+ "seed_key": "بیج کی کلید",
718
+ "enter_seed_phrase": "اپنے بیج کا جملہ درج کریں"
719
+}
\ No newline at end of file
res/values/strings_yo.arb
+4
-2
@@ -715,5 +715,7 @@
715
"message": "Ifiranṣẹ",
716
"do_not_have_enough_gas_asset": "O ko ni to ${currency} lati ṣe idunadura kan pẹlu awọn ipo nẹtiwọki blockchain lọwọlọwọ. O nilo diẹ sii ${currency} lati san awọn owo nẹtiwọọki blockchain, paapaa ti o ba nfi dukia miiran ranṣẹ.",
717
"totp_auth_url": "TOTP AUTH URL",
718
- "awaitDAppProcessing": "Fi inurere duro fun dApp lati pari sisẹ."
719
-}
718
+ "awaitDAppProcessing": "Fi inurere duro fun dApp lati pari sisẹ.",
719
+ "seed_key": "Bọtini Ose",
720
+ "enter_seed_phrase": "Tẹ ọrọ-iru irugbin rẹ"
721
+}
\ No newline at end of file
res/values/strings_zh.arb
+4
-2
@@ -720,5 +720,7 @@
720
"message": "信息",
721
"do_not_have_enough_gas_asset": "您没有足够的 ${currency} 来在当前的区块链网络条件下进行交易。即使您发送的是不同的资产,您也需要更多的 ${currency} 来支付区块链网络费用。",
722
"totp_auth_url": "TOTP 授权 URL",
723
- "awaitDAppProcessing": "请等待 dApp 处理完成。"
724
-}
723
+ "awaitDAppProcessing": "请等待 dApp 处理完成。",
724
+ "seed_key": "种子钥匙",
725
+ "enter_seed_phrase": "输入您的种子短语"
726
+}
\ No newline at end of file