CWA-210 | added template class, template tile, send template page and send template store
Oleksandr Sobol committed
May 8, 2020 at 19:22 UTC
25f3920073b43a634781107337bf316cf5446968
25 files changed
+857
-47
assets/images/2.0x/to_icon.png
Binary files /dev/null and b/assets/images/2.0x/to_icon.png differ
assets/images/3.0x/to_icon.png
Binary files /dev/null and b/assets/images/3.0x/to_icon.png differ
assets/images/to_icon.png
Binary files /dev/null and b/assets/images/to_icon.png differ
lib/generated/i18n.dart
+208
-1
@@ -77,6 +77,7 @@ class S implements WidgetsLocalizations {
77
String get error_text_node_port => "Node port can only contain numbers between 0 and 65535";
78
String get error_text_payment_id => "Payment ID can only contain from 16 to 64 chars in hex";
79
String get error_text_subaddress_name => "Subaddress name can't contain ` , ' \" symbols\nand must be between 1 and 20 characters long";
80
+ String get error_text_template => "Template name and address can't contain ` , ' \" symbols\nand must be between 1 and 106 characters long";
81
String get error_text_wallet_name => "Wallet name can only contain letters, numbers\nand must be between 1 and 15 characters long";
82
String get error_text_xmr => "XMR value can't exceed available balance.\nThe number of fraction digits must be less or equal to 12";
83
String get estimated => "Estimated";
@@ -165,12 +166,20 @@ class S implements WidgetsLocalizations {
166
String get seed_share => "Share seed";
167
String get seed_title => "Seed";
168
String get send => "Send";
169
+ String get send_amount => "Amount:";
170
String get send_creating_transaction => "Creating transaction";
171
String get send_error_currency => "Currency can only contain numbers";
172
String get send_error_minimum_value => "Minimum value of amount is 0.01";
173
String get send_estimated_fee => "Estimated fee:";
174
+ String get send_fee => "Fee:";
175
+ String get send_got_it => "Got it";
176
String get send_monero_address => "Monero address";
177
+ String get send_name => "Name";
178
+ String get send_new => "New";
179
String get send_payment_id => "Payment ID (optional)";
180
+ String get send_sending => "Sending...";
181
+ String get send_success => "Your Monero was successfully sent";
182
+ String get send_templates => "Templates";
183
String get send_title => "Send Monero";
184
String get send_xmr => "Send XMR";
185
String get send_your_wallet => "Your wallet";
@@ -338,6 +347,8 @@ class $de extends S {
347
@override
348
String get transaction_sent => "Transaktion gesendet!";
349
@override
350
+ String get send_fee => "Gebühr:";
351
+ @override
352
String get password => "Passwort";
353
@override
354
String get you_will_get => "Sie erhalten";
@@ -350,6 +361,8 @@ class $de extends S {
361
@override
362
String get share_address => "Adresse teilen ";
363
@override
364
+ String get send_templates => "Vorlagen";
365
+ @override
366
String get please_try_to_connect_to_another_node => "Bitte versuchen Sie, eine Verbindung zu einem anderen Knoten herzustellen";
367
@override
368
String get trade_state_traded => "Handeln";
@@ -374,6 +387,8 @@ class $de extends S {
387
@override
388
String get seed_language_portuguese => "Portugiesisch";
389
@override
390
+ String get send_new => "Neu";
391
+ @override
392
String get setup_pin => "PIN einrichten";
393
@override
394
String get transaction_details_recipient_address => "Empfängeradresse";
@@ -388,6 +403,8 @@ class $de extends S {
403
@override
404
String get trade_state_trading => "Handel";
405
@override
406
+ String get send_sending => "Senden...";
407
+ @override
408
String get error_text_address => "Die Walletadresse muss dem Typ entsprechen\nder Kryptowährung";
409
@override
410
String get send_your_wallet => "Deine Geldbörse";
@@ -516,6 +533,8 @@ class $de extends S {
533
@override
534
String get paste => "Einfügen";
535
@override
536
+ String get send_got_it => "Ich habs";
537
+ @override
538
String get widgets_or => "oder";
539
@override
540
String get remove => "Löschen";
@@ -524,12 +543,16 @@ class $de extends S {
543
@override
544
String get yesterday => "Gestern";
545
@override
546
+ String get send_amount => "Menge:";
547
+ @override
548
String get expired => "Abgelaufen";
549
@override
550
String get transaction_priority_regular => "Regulär";
551
@override
552
String get trade_details_created_at => "Hergestellt in";
553
@override
554
+ String get send_success => "Ihr Monero wurde erfolgreich gesendet";
555
+ @override
556
String get settings_wallets => "Brieftaschen";
557
@override
558
String get settings_only_transactions => "Nur Transaktionen";
@@ -552,6 +575,8 @@ class $de extends S {
575
@override
576
String get nodes => "Knoten";
577
@override
578
+ String get error_text_template => "Vorlagenname und Adresse dürfen nicht enthalten ` , ' \" symbole\nund muss zwischen 1 und 106 Zeichen lang sein";
579
+ @override
580
String get seed_share => "Teilen Sie Seed";
581
@override
582
String get widgets_restore_from_blockheight => "Aus Blockhöhe wiederherstellen";
@@ -688,6 +713,8 @@ class $de extends S {
713
@override
714
String get restore_active_seed => "Aktives Seed";
715
@override
716
+ String get send_name => "Name";
717
+ @override
718
String get settings_personal => "persönlich";
719
@override
720
String get seed_title => "Seed";
@@ -922,6 +949,8 @@ class $hi extends S {
949
@override
950
String get transaction_sent => "भेजा गया लेन-देन";
951
@override
952
+ String get send_fee => "शुल्क:";
953
+ @override
954
String get password => "पारण शब्द";
955
@override
956
String get you_will_get => "आपको मिल जायेगा";
@@ -934,6 +963,8 @@ class $hi extends S {
963
@override
964
String get share_address => "पता साझा करें";
965
@override
966
+ String get send_templates => "टेम्पलेट्स";
967
+ @override
968
String get please_try_to_connect_to_another_node => "कृपया दूसरे नोड से कनेक्ट करने का प्रयास करें";
969
@override
970
String get trade_state_traded => "ट्रेडेड";
@@ -958,6 +989,8 @@ class $hi extends S {
989
@override
990
String get seed_language_portuguese => "पुर्तगाली";
991
@override
992
+ String get send_new => "नया";
993
+ @override
994
String get setup_pin => "पिन सेट करें";
995
@override
996
String get transaction_details_recipient_address => "प्राप्तकर्ता का पता";
@@ -972,6 +1005,8 @@ class $hi extends S {
1005
@override
1006
String get trade_state_trading => "व्यापार";
1007
@override
1008
+ String get send_sending => "भेजना...";
1009
+ @override
1010
String get error_text_address => "वॉलेट पता प्रकार के अनुरूप होना चाहिए\nक्रिप्टोकरेंसी का";
1011
@override
1012
String get send_your_wallet => "आपका बटुआ";
@@ -1100,6 +1135,8 @@ class $hi extends S {
1135
@override
1136
String get paste => "पेस्ट करें";
1137
@override
1138
+ String get send_got_it => "समझ गया";
1139
+ @override
1140
String get widgets_or => "या";
1141
@override
1142
String get remove => "हटाना";
@@ -1108,12 +1145,16 @@ class $hi extends S {
1145
@override
1146
String get yesterday => "बिता कल";
1147
@override
1148
+ String get send_amount => "रकम:";
1149
+ @override
1150
String get expired => "समय सीमा समाप्त";
1151
@override
1152
String get transaction_priority_regular => "नियमित";
1153
@override
1154
String get trade_details_created_at => "पर बनाया गया";
1155
@override
1156
+ String get send_success => "आपका Monero सफलतापूर्वक भेजा गया";
1157
+ @override
1158
String get settings_wallets => "पर्स";
1159
@override
1160
String get settings_only_transactions => "केवल लेन-देन";
@@ -1136,6 +1177,8 @@ class $hi extends S {
1177
@override
1178
String get nodes => "नोड्स";
1179
@override
1180
+ String get error_text_template => "टेम्प्लेट का नाम और पता नहीं हो सकता ` , ' \" प्रतीकों\nऔर 1 और 106 वर्णों के बीच लंबा होना चाहिए";
1181
+ @override
1182
String get seed_share => "बीज साझा करें";
1183
@override
1184
String get widgets_restore_from_blockheight => "ब्लॉकचेन से पुनर्स्थापित करें";
@@ -1272,6 +1315,8 @@ class $hi extends S {
1315
@override
1316
String get restore_active_seed => "सक्रिय बीज";
1317
@override
1318
+ String get send_name => "नाम";
1319
+ @override
1320
String get settings_personal => "निजी";
1321
@override
1322
String get seed_title => "बीज";
@@ -1506,6 +1551,8 @@ class $ru extends S {
1551
@override
1552
String get transaction_sent => "Tранзакция отправлена!";
1553
@override
1554
+ String get send_fee => "Комиссия:";
1555
+ @override
1556
String get password => "Пароль";
1557
@override
1558
String get you_will_get => "Вы получите";
@@ -1518,6 +1565,8 @@ class $ru extends S {
1565
@override
1566
String get share_address => "Поделиться адресом";
1567
@override
1568
+ String get send_templates => "Шаблоны";
1569
+ @override
1570
String get please_try_to_connect_to_another_node => "Пожалуйста, попробуйте подключиться к другой ноде";
1571
@override
1572
String get trade_state_traded => "Сделка завершена";
@@ -1542,6 +1591,8 @@ class $ru extends S {
1591
@override
1592
String get seed_language_portuguese => "Португальский";
1593
@override
1594
+ String get send_new => "Новый";
1595
+ @override
1596
String get setup_pin => "Настроить PIN";
1597
@override
1598
String get transaction_details_recipient_address => "Адрес получателя";
@@ -1556,6 +1607,8 @@ class $ru extends S {
1607
@override
1608
String get trade_state_trading => "Совершение сделки";
1609
@override
1610
+ String get send_sending => "Отправка...";
1611
+ @override
1612
String get error_text_address => "Адрес кошелька должен соответствовать типу\nкриптовалюты";
1613
@override
1614
String get send_your_wallet => "Ваш кошелёк";
@@ -1684,6 +1737,8 @@ class $ru extends S {
1737
@override
1738
String get paste => "Вставить";
1739
@override
1740
+ String get send_got_it => "Понял";
1741
+ @override
1742
String get widgets_or => "или";
1743
@override
1744
String get remove => "Удалить";
@@ -1692,12 +1747,16 @@ class $ru extends S {
1747
@override
1748
String get yesterday => "Вчера";
1749
@override
1750
+ String get send_amount => "Сумма:";
1751
+ @override
1752
String get expired => "Истекает";
1753
@override
1754
String get transaction_priority_regular => "Обычный";
1755
@override
1756
String get trade_details_created_at => "Создано";
1757
@override
1758
+ String get send_success => "Ваш Monero был успешно отправлен";
1759
+ @override
1760
String get settings_wallets => "Кошельки";
1761
@override
1762
String get settings_only_transactions => "Транзакции";
@@ -1720,6 +1779,8 @@ class $ru extends S {
1779
@override
1780
String get nodes => "Ноды";
1781
@override
1782
+ String get error_text_template => "Имя и адрес шаблона не может содержать ` , ' \" символы\nи должно быть от 1 до 106 символов в длину";
1783
+ @override
1784
String get seed_share => "Поделиться мнемонической фразой";
1785
@override
1786
String get widgets_restore_from_blockheight => "Восстановить на высоте блока";
@@ -1856,6 +1917,8 @@ class $ru extends S {
1917
@override
1918
String get restore_active_seed => "Активная мнемоническая фраза";
1919
@override
1920
+ String get send_name => "Имя";
1921
+ @override
1922
String get settings_personal => "Персональные";
1923
@override
1924
String get seed_title => "Мнемоническая фраза";
@@ -2090,6 +2153,8 @@ class $ko extends S {
2153
@override
2154
String get transaction_sent => "거래가 전송되었습니다!";
2155
@override
2156
+ String get send_fee => "회비:";
2157
+ @override
2158
String get password => "암호";
2159
@override
2160
String get you_will_get => "당신은 얻을 것이다";
@@ -2102,6 +2167,8 @@ class $ko extends S {
2167
@override
2168
String get share_address => "주소 공유";
2169
@override
2170
+ String get send_templates => "템플릿";
2171
+ @override
2172
String get please_try_to_connect_to_another_node => "다른 노드에 연결을 시도하십시오";
2173
@override
2174
String get trade_state_traded => "거래";
@@ -2126,6 +2193,8 @@ class $ko extends S {
2193
@override
2194
String get seed_language_portuguese => "포르투갈 인";
2195
@override
2196
+ String get send_new => "새로운";
2197
+ @override
2198
String get setup_pin => "설정 PIN";
2199
@override
2200
String get transaction_details_recipient_address => "받는 사람 주소";
@@ -2140,6 +2209,8 @@ class $ko extends S {
2209
@override
2210
String get trade_state_trading => "거래";
2211
@override
2212
+ String get send_sending => "배상...";
2213
+ @override
2214
String get error_text_address => "지갑 주소는 유형과 일치해야합니다\n암호 화폐";
2215
@override
2216
String get send_your_wallet => "지갑";
@@ -2268,6 +2339,8 @@ class $ko extends S {
2339
@override
2340
String get paste => "풀";
2341
@override
2342
+ String get send_got_it => "알았다";
2343
+ @override
2344
String get widgets_or => "또는";
2345
@override
2346
String get remove => "없애다";
@@ -2276,12 +2349,16 @@ class $ko extends S {
2349
@override
2350
String get yesterday => "어제";
2351
@override
2352
+ String get send_amount => "양:";
2353
+ @override
2354
String get expired => "만료";
2355
@override
2356
String get transaction_priority_regular => "정규병";
2357
@override
2358
String get trade_details_created_at => "에 작성";
2359
@override
2360
+ String get send_success => "Monero가 성공적으로 전송되었습니다";
2361
+ @override
2362
String get settings_wallets => "지갑";
2363
@override
2364
String get settings_only_transactions => "거래 만";
@@ -2304,6 +2381,8 @@ class $ko extends S {
2381
@override
2382
String get nodes => "노드";
2383
@override
2384
+ String get error_text_template => "템플릿 이름과 주소는 포함 할 수 없습니다 ` , ' \" 기호 \n1 ~ 106 자 사이 여야합니다";
2385
+ @override
2386
String get seed_share => "시드 공유";
2387
@override
2388
String get widgets_restore_from_blockheight => "블록 높이에서 복원";
@@ -2440,6 +2519,8 @@ class $ko extends S {
2519
@override
2520
String get restore_active_seed => "활성 종자";
2521
@override
2522
+ String get send_name => "이름";
2523
+ @override
2524
String get settings_personal => "개인적인";
2525
@override
2526
String get seed_title => "씨";
@@ -2674,6 +2755,8 @@ class $pt extends S {
2755
@override
2756
String get transaction_sent => "Transação enviada!";
2757
@override
2758
+ String get send_fee => "Taxa:";
2759
+ @override
2760
String get password => "Senha";
2761
@override
2762
String get you_will_get => "Você receberá";
@@ -2686,6 +2769,8 @@ class $pt extends S {
2769
@override
2770
String get share_address => "Compartilhar endereço";
2771
@override
2772
+ String get send_templates => "Modelos";
2773
+ @override
2774
String get please_try_to_connect_to_another_node => "Por favor, tente conectar-se a outro nó";
2775
@override
2776
String get trade_state_traded => "Troca realizada";
@@ -2710,6 +2795,8 @@ class $pt extends S {
2795
@override
2796
String get seed_language_portuguese => "Português";
2797
@override
2798
+ String get send_new => "Novo";
2799
+ @override
2800
String get setup_pin => "Configurar PIN";
2801
@override
2802
String get transaction_details_recipient_address => "Endereço do destinatário";
@@ -2724,6 +2811,8 @@ class $pt extends S {
2811
@override
2812
String get trade_state_trading => "Em andamento";
2813
@override
2814
+ String get send_sending => "Enviando...";
2815
+ @override
2816
String get error_text_address => "O endereço da carteira deve corresponder à\ncriptomoeda selecionada";
2817
@override
2818
String get send_your_wallet => "Sua carteira";
@@ -2852,6 +2941,8 @@ class $pt extends S {
2941
@override
2942
String get paste => "Colar";
2943
@override
2944
+ String get send_got_it => "Entendi";
2945
+ @override
2946
String get widgets_or => "ou";
2947
@override
2948
String get remove => "Remover";
@@ -2860,12 +2951,16 @@ class $pt extends S {
2951
@override
2952
String get yesterday => "Ontem";
2953
@override
2954
+ String get send_amount => "Montante:";
2955
+ @override
2956
String get expired => "Expirada";
2957
@override
2958
String get transaction_priority_regular => "Regular";
2959
@override
2960
String get trade_details_created_at => "Criada em";
2961
@override
2962
+ String get send_success => "Seu Monero foi enviado com sucesso";
2963
+ @override
2964
String get settings_wallets => "Carteiras";
2965
@override
2966
String get settings_only_transactions => "Somente transações";
@@ -2888,6 +2983,8 @@ class $pt extends S {
2983
@override
2984
String get nodes => "Nós";
2985
@override
2986
+ String get error_text_template => "O nome e o endereço do modelo não podem conter os símbolos ` , ' \" \ne deve ter entre 1 e 106 caracteres";
2987
+ @override
2988
String get seed_share => "Compartilhar semente";
2989
@override
2990
String get widgets_restore_from_blockheight => "Restaurar a partir de altura do bloco";
@@ -3024,6 +3121,8 @@ class $pt extends S {
3121
@override
3122
String get restore_active_seed => "Semente ativa";
3123
@override
3124
+ String get send_name => "Nome";
3125
+ @override
3126
String get settings_personal => "Pessoal";
3127
@override
3128
String get seed_title => "Semente";
@@ -3258,6 +3357,8 @@ class $uk extends S {
3357
@override
3358
String get transaction_sent => "Tранзакцію відправлено!";
3359
@override
3360
+ String get send_fee => "Комісія:";
3361
+ @override
3362
String get password => "Пароль";
3363
@override
3364
String get you_will_get => "Ви отримаєте";
@@ -3270,6 +3371,8 @@ class $uk extends S {
3371
@override
3372
String get share_address => "Поділитися адресою";
3373
@override
3374
+ String get send_templates => "Шаблони";
3375
+ @override
3376
String get please_try_to_connect_to_another_node => "Будь ласка, спробуйте підключитися до іншого вузлу";
3377
@override
3378
String get trade_state_traded => "Операція виконана";
@@ -3294,6 +3397,8 @@ class $uk extends S {
3397
@override
3398
String get seed_language_portuguese => "Португальська";
3399
@override
3400
+ String get send_new => "Новий";
3401
+ @override
3402
String get setup_pin => "Встановити PIN";
3403
@override
3404
String get transaction_details_recipient_address => "Адреса отримувача";
@@ -3308,6 +3413,8 @@ class $uk extends S {
3413
@override
3414
String get trade_state_trading => "Виконання операції";
3415
@override
3416
+ String get send_sending => "Відправлення...";
3417
+ @override
3418
String get error_text_address => "Адреса гаманця повинна відповідати типу\nкриптовалюти";
3419
@override
3420
String get send_your_wallet => "Ваш гаманець";
@@ -3334,7 +3441,7 @@ class $uk extends S {
3441
@override
3442
String get copy_address => "Cкопіювати адресу";
3443
@override
3337
- String get error_text_subaddress_name => "Ім'я субадреси не може містити ` , ' \" символи\nі може бути від 1 до 32 символів в довжину";
3444
+ String get error_text_subaddress_name => "Ім'я субадреси не може містити ` , ' \" символи\nі може бути від 1 до 20 символів в довжину";
3445
@override
3446
String get incorrect_seed => "Введений текст невірний.";
3447
@override
@@ -3436,6 +3543,8 @@ class $uk extends S {
3543
@override
3544
String get paste => "Вставити";
3545
@override
3546
+ String get send_got_it => "Зрозумів";
3547
+ @override
3548
String get widgets_or => "або";
3549
@override
3550
String get remove => "Видалити";
@@ -3444,12 +3553,16 @@ class $uk extends S {
3553
@override
3554
String get yesterday => "Вчора";
3555
@override
3556
+ String get send_amount => "Сума:";
3557
+ @override
3558
String get expired => "Закінчується";
3559
@override
3560
String get transaction_priority_regular => "Звичайний";
3561
@override
3562
String get trade_details_created_at => "Створено";
3563
@override
3564
+ String get send_success => "Ваш Monero успішно надісланий";
3565
+ @override
3566
String get settings_wallets => "Гаманці";
3567
@override
3568
String get settings_only_transactions => "Транзакції";
@@ -3472,6 +3585,8 @@ class $uk extends S {
3585
@override
3586
String get nodes => "Вузли";
3587
@override
3588
+ String get error_text_template => "Ім'я та адреса шаблону не може містити ` , ' \" символи\nі може бути від 1 до 106 символів в довжину";
3589
+ @override
3590
String get seed_share => "Поділитися мнемонічною фразою";
3591
@override
3592
String get widgets_restore_from_blockheight => "Відновити на висоті блоку";
@@ -3608,6 +3723,8 @@ class $uk extends S {
3723
@override
3724
String get restore_active_seed => "Активна мнемонічна фраза";
3725
@override
3726
+ String get send_name => "Ім'я";
3727
+ @override
3728
String get settings_personal => "Персональні";
3729
@override
3730
String get seed_title => "Мнемонічна фраза";
@@ -3842,6 +3959,8 @@ class $ja extends S {
3959
@override
3960
String get transaction_sent => "トランザクションが送信されました!";
3961
@override
3962
+ String get send_fee => "費用:";
3963
+ @override
3964
String get password => "パスワード";
3965
@override
3966
String get you_will_get => "あなたが取得します";
@@ -3854,6 +3973,8 @@ class $ja extends S {
3973
@override
3974
String get share_address => "住所を共有する";
3975
@override
3976
+ String get send_templates => "テンプレート";
3977
+ @override
3978
String get please_try_to_connect_to_another_node => "別のノードに接続してみてください";
3979
@override
3980
String get trade_state_traded => "取引済み";
@@ -3878,6 +3999,8 @@ class $ja extends S {
3999
@override
4000
String get seed_language_portuguese => "ポルトガル語";
4001
@override
4002
+ String get send_new => "新着";
4003
+ @override
4004
String get setup_pin => "PINのセットアップ";
4005
@override
4006
String get transaction_details_recipient_address => "受取人の住所";
@@ -3892,6 +4015,8 @@ class $ja extends S {
4015
@override
4016
String get trade_state_trading => "トレーディング";
4017
@override
4018
+ String get send_sending => "送信...";
4019
+ @override
4020
String get error_text_address => "ウォレットアドレスは、\n暗号通貨";
4021
@override
4022
String get send_your_wallet => "あなたの財布";
@@ -4020,6 +4145,8 @@ class $ja extends S {
4145
@override
4146
String get paste => "ペースト";
4147
@override
4148
+ String get send_got_it => "とった";
4149
+ @override
4150
String get widgets_or => "または";
4151
@override
4152
String get remove => "削除する";
@@ -4028,12 +4155,16 @@ class $ja extends S {
4155
@override
4156
String get yesterday => "昨日";
4157
@override
4158
+ String get send_amount => "量:";
4159
+ @override
4160
String get expired => "期限切れ";
4161
@override
4162
String get transaction_priority_regular => "レギュラー";
4163
@override
4164
String get trade_details_created_at => "で作成";
4165
@override
4166
+ String get send_success => "Moneroが送信されました";
4167
+ @override
4168
String get settings_wallets => "財布";
4169
@override
4170
String get settings_only_transactions => "トランザクションのみ";
@@ -4056,6 +4187,8 @@ class $ja extends S {
4187
@override
4188
String get nodes => "ノード";
4189
@override
4190
+ String get error_text_template => "テンプレートの名前とアドレスに含めることはできません ` , ' \" シンボル\n1〜106文字の長さである必要があります";
4191
+ @override
4192
String get seed_share => "シードを共有する";
4193
@override
4194
String get widgets_restore_from_blockheight => "ブロックの高さから復元";
@@ -4192,6 +4325,8 @@ class $ja extends S {
4325
@override
4326
String get restore_active_seed => "アクティブシード";
4327
@override
4328
+ String get send_name => "名前";
4329
+ @override
4330
String get settings_personal => "パーソナル";
4331
@override
4332
String get seed_title => "シード";
@@ -4430,6 +4565,8 @@ class $pl extends S {
4565
@override
4566
String get transaction_sent => "Transakcja wysłana!";
4567
@override
4568
+ String get send_fee => "Opłata:";
4569
+ @override
4570
String get password => "Hasło";
4571
@override
4572
String get you_will_get => "Dostaniesz";
@@ -4442,6 +4579,8 @@ class $pl extends S {
4579
@override
4580
String get share_address => "Udostępnij adres";
4581
@override
4582
+ String get send_templates => "Szablony";
4583
+ @override
4584
String get please_try_to_connect_to_another_node => "Spróbuj połączyć się z innym węzłem";
4585
@override
4586
String get trade_state_traded => "Handlowane";
@@ -4466,6 +4605,8 @@ class $pl extends S {
4605
@override
4606
String get seed_language_portuguese => "Portugalski";
4607
@override
4608
+ String get send_new => "Nowy";
4609
+ @override
4610
String get setup_pin => "Ustaw PIN";
4611
@override
4612
String get transaction_details_recipient_address => "Adres odbiorcy";
@@ -4480,6 +4621,8 @@ class $pl extends S {
4621
@override
4622
String get trade_state_trading => "Handlowy";
4623
@override
4624
+ String get send_sending => "Wysyłanie...";
4625
+ @override
4626
String get error_text_address => "Wallet address must correspond to the type\nof cryptocurrency";
4627
@override
4628
String get send_your_wallet => "Twój portfel";
@@ -4608,6 +4751,8 @@ class $pl extends S {
4751
@override
4752
String get paste => "Pasta";
4753
@override
4754
+ String get send_got_it => "Rozumiem";
4755
+ @override
4756
String get widgets_or => "lub";
4757
@override
4758
String get remove => "Usunąć";
@@ -4616,12 +4761,16 @@ class $pl extends S {
4761
@override
4762
String get yesterday => "Wczoraj";
4763
@override
4764
+ String get send_amount => "Ilość:";
4765
+ @override
4766
String get expired => "Przedawniony";
4767
@override
4768
String get transaction_priority_regular => "Regularny";
4769
@override
4770
String get trade_details_created_at => "Utworzono w";
4771
@override
4772
+ String get send_success => "Twoje Monero zostało pomyślnie wysłane";
4773
+ @override
4774
String get settings_wallets => "Portfele";
4775
@override
4776
String get settings_only_transactions => "Tylko transakcje";
@@ -4644,6 +4793,8 @@ class $pl extends S {
4793
@override
4794
String get nodes => "Węzły";
4795
@override
4796
+ String get error_text_template => "Nazwa i adres szablonu nie mogą zawierać ` , ' \" symbolika\ni musi mieć od 1 do 106 znaków";
4797
+ @override
4798
String get seed_share => "Udostępnij ziarno";
4799
@override
4800
String get widgets_restore_from_blockheight => "Przywróć z wysokości bloku";
@@ -4780,6 +4931,8 @@ class $pl extends S {
4931
@override
4932
String get restore_active_seed => "Aktywne nasiona";
4933
@override
4934
+ String get send_name => "Imię";
4935
+ @override
4936
String get settings_personal => "Osobisty";
4937
@override
4938
String get seed_title => "Ziarno";
@@ -5014,6 +5167,8 @@ class $es extends S {
5167
@override
5168
String get transaction_sent => "Transacción enviada!";
5169
@override
5170
+ String get send_fee => "Cuota:";
5171
+ @override
5172
String get password => "Contraseña";
5173
@override
5174
String get you_will_get => "Conseguirás";
@@ -5026,6 +5181,8 @@ class $es extends S {
5181
@override
5182
String get share_address => "Compartir dirección";
5183
@override
5184
+ String get send_templates => "Plantillas";
5185
+ @override
5186
String get please_try_to_connect_to_another_node => "Intenta conectarte a otro nodo";
5187
@override
5188
String get trade_state_traded => "Negociado";
@@ -5050,6 +5207,8 @@ class $es extends S {
5207
@override
5208
String get seed_language_portuguese => "Portugués";
5209
@override
5210
+ String get send_new => "Nuevo";
5211
+ @override
5212
String get setup_pin => "PIN de configuración";
5213
@override
5214
String get transaction_details_recipient_address => "Dirección del receptor";
@@ -5064,6 +5223,8 @@ class $es extends S {
5223
@override
5224
String get trade_state_trading => "Comercio";
5225
@override
5226
+ String get send_sending => "Enviando...";
5227
+ @override
5228
String get error_text_address => "La dirección de la billetera debe corresponder al tipo \nde criptomoneda";
5229
@override
5230
String get send_your_wallet => "Tu billetera";
@@ -5192,6 +5353,8 @@ class $es extends S {
5353
@override
5354
String get paste => "Pegar";
5355
@override
5356
+ String get send_got_it => "Entendido";
5357
+ @override
5358
String get widgets_or => "o";
5359
@override
5360
String get remove => "Retirar";
@@ -5200,12 +5363,16 @@ class $es extends S {
5363
@override
5364
String get yesterday => "Ayer";
5365
@override
5366
+ String get send_amount => "Cantidad:";
5367
+ @override
5368
String get expired => "Muerto";
5369
@override
5370
String get transaction_priority_regular => "Regular";
5371
@override
5372
String get trade_details_created_at => "Creado en";
5373
@override
5374
+ String get send_success => "Su Monero fue enviado con éxito";
5375
+ @override
5376
String get settings_wallets => "Carteras";
5377
@override
5378
String get settings_only_transactions => "Solo transacciones";
@@ -5228,6 +5395,8 @@ class $es extends S {
5395
@override
5396
String get nodes => "Nodos";
5397
@override
5398
+ String get error_text_template => "El nombre y la dirección de la plantilla no pueden contener símbolos ` , '\" \ny debe tener entre 1 y 106 caracteres de longitud";
5399
+ @override
5400
String get seed_share => "Compartir semillas";
5401
@override
5402
String get widgets_restore_from_blockheight => "Restaurar desde blockheight";
@@ -5364,6 +5533,8 @@ class $es extends S {
5533
@override
5534
String get restore_active_seed => "Semilla activa";
5535
@override
5536
+ String get send_name => "Nombre";
5537
+ @override
5538
String get settings_personal => "Personal";
5539
@override
5540
String get seed_title => "Semilla";
@@ -5598,6 +5769,8 @@ class $nl extends S {
5769
@override
5770
String get transaction_sent => "Transactie verzonden!";
5771
@override
5772
+ String get send_fee => "Vergoeding:";
5773
+ @override
5774
String get password => "Wachtwoord";
5775
@override
5776
String get you_will_get => "Je zult krijgen";
@@ -5610,6 +5783,8 @@ class $nl extends S {
5783
@override
5784
String get share_address => "Deel adres";
5785
@override
5786
+ String get send_templates => "Sjablonen";
5787
+ @override
5788
String get please_try_to_connect_to_another_node => "Probeer verbinding te maken met een ander knooppunt";
5789
@override
5790
String get trade_state_traded => "Traded";
@@ -5634,6 +5809,8 @@ class $nl extends S {
5809
@override
5810
String get seed_language_portuguese => "Portugees";
5811
@override
5812
+ String get send_new => "Nieuw";
5813
+ @override
5814
String get setup_pin => "PIN instellen";
5815
@override
5816
String get transaction_details_recipient_address => "Adres van de ontvanger";
@@ -5648,6 +5825,8 @@ class $nl extends S {
5825
@override
5826
String get trade_state_trading => "Handel";
5827
@override
5828
+ String get send_sending => "Bezig met verzenden...";
5829
+ @override
5830
String get error_text_address => "Portemonnee-adres moet overeenkomen met het type\nvan cryptocurrency";
5831
@override
5832
String get send_your_wallet => "Uw portemonnee";
@@ -5776,6 +5955,8 @@ class $nl extends S {
5955
@override
5956
String get paste => "Plakken";
5957
@override
5958
+ String get send_got_it => "Ik snap het";
5959
+ @override
5960
String get widgets_or => "of";
5961
@override
5962
String get remove => "Verwijderen";
@@ -5784,12 +5965,16 @@ class $nl extends S {
5965
@override
5966
String get yesterday => "Gisteren";
5967
@override
5968
+ String get send_amount => "Bedrag:";
5969
+ @override
5970
String get expired => "Verlopen";
5971
@override
5972
String get transaction_priority_regular => "Regelmatig";
5973
@override
5974
String get trade_details_created_at => "Gemaakt bij";
5975
@override
5976
+ String get send_success => "Uw Monero is succesvol verzonden";
5977
+ @override
5978
String get settings_wallets => "Portemonnee";
5979
@override
5980
String get settings_only_transactions => "Alleen transacties";
@@ -5812,6 +5997,8 @@ class $nl extends S {
5997
@override
5998
String get nodes => "Knooppunten";
5999
@override
6000
+ String get error_text_template => "Sjabloonnaam en -adres mogen niet bevatten ` , ' \" symbolen\nen moet tussen de 1 en 106 tekens lang zijn";
6001
+ @override
6002
String get seed_share => "Deel zaad";
6003
@override
6004
String get widgets_restore_from_blockheight => "Herstel vanaf blockheight";
@@ -5948,6 +6135,8 @@ class $nl extends S {
6135
@override
6136
String get restore_active_seed => "Actief zaad";
6137
@override
6138
+ String get send_name => "Naam";
6139
+ @override
6140
String get settings_personal => "Persoonlijk";
6141
@override
6142
String get seed_title => "Zaad";
@@ -6182,6 +6371,8 @@ class $zh extends S {
6371
@override
6372
String get transaction_sent => "交易已发送";
6373
@override
6374
+ String get send_fee => "費用:";
6375
+ @override
6376
String get password => "密码";
6377
@override
6378
String get you_will_get => "你会得到";
@@ -6194,6 +6385,8 @@ class $zh extends S {
6385
@override
6386
String get share_address => "分享地址";
6387
@override
6388
+ String get send_templates => "範本";
6389
+ @override
6390
String get please_try_to_connect_to_another_node => "请尝试连接到另一个节点";
6391
@override
6392
String get trade_state_traded => "交易";
@@ -6218,6 +6411,8 @@ class $zh extends S {
6411
@override
6412
String get seed_language_portuguese => "葡萄牙語";
6413
@override
6414
+ String get send_new => "新";
6415
+ @override
6416
String get setup_pin => "设定PIN码";
6417
@override
6418
String get transaction_details_recipient_address => "收件人地址";
@@ -6232,6 +6427,8 @@ class $zh extends S {
6427
@override
6428
String get trade_state_trading => "贸易";
6429
@override
6430
+ String get send_sending => "正在發送...";
6431
+ @override
6432
String get error_text_address => "钱包地址必须与类型对应\n加密货币";
6433
@override
6434
String get send_your_wallet => "你的钱包";
@@ -6360,6 +6557,8 @@ class $zh extends S {
6557
@override
6558
String get paste => "糊";
6559
@override
6560
+ String get send_got_it => "得到它了";
6561
+ @override
6562
String get widgets_or => "要么";
6563
@override
6564
String get remove => "去掉";
@@ -6368,12 +6567,16 @@ class $zh extends S {
6567
@override
6568
String get yesterday => "昨天";
6569
@override
6570
+ String get send_amount => "量:";
6571
+ @override
6572
String get expired => "已过期";
6573
@override
6574
String get transaction_priority_regular => "定期";
6575
@override
6576
String get trade_details_created_at => "创建于";
6577
@override
6578
+ String get send_success => "你Monero已成功發送";
6579
+ @override
6580
String get settings_wallets => "皮夹";
6581
@override
6582
String get settings_only_transactions => "仅交易";
@@ -6396,6 +6599,8 @@ class $zh extends S {
6599
@override
6600
String get nodes => "节点";
6601
@override
6602
+ String get error_text_template => "模板名稱和地址不能包含`,' \" 符号\n并且必须在1到106个字符之间";
6603
+ @override
6604
String get seed_share => "分享种子";
6605
@override
6606
String get widgets_restore_from_blockheight => "从块高还原";
@@ -6532,6 +6737,8 @@ class $zh extends S {
6737
@override
6738
String get restore_active_seed => "活性種子";
6739
@override
6740
+ String get send_name => "名稱";
6741
+ @override
6742
String get settings_personal => "个人";
6743
@override
6744
String get seed_title => "种子";
lib/main.dart
+7
-1
@@ -21,6 +21,7 @@ import 'package:cake_wallet/src/stores/login/login_store.dart';
21
import 'package:cake_wallet/src/stores/balance/balance_store.dart';
22
import 'package:cake_wallet/src/stores/sync/sync_store.dart';
23
import 'package:cake_wallet/src/stores/wallet/wallet_store.dart';
24
+import 'package:cake_wallet/src/stores/send_template/send_template_store.dart';
25
import 'package:cake_wallet/src/screens/root/root.dart';
26
import 'package:cake_wallet/src/stores/authentication/authentication_store.dart';
27
import 'package:cake_wallet/src/stores/settings/settings_store.dart';
@@ -32,6 +33,7 @@ import 'package:cake_wallet/src/domain/common/default_settings_migration.dart';
33
import 'package:cake_wallet/src/domain/common/fiat_currency.dart';
34
import 'package:cake_wallet/src/domain/common/transaction_priority.dart';
35
import 'package:cake_wallet/src/domain/common/wallet_type.dart';
36
+import 'package:cake_wallet/src/domain/common/template.dart';
37
import 'package:cake_wallet/src/domain/services/wallet_service.dart';
38
import 'package:cake_wallet/generated/i18n.dart';
39
import 'package:cake_wallet/src/domain/common/language.dart';
@@ -48,6 +50,7 @@ void main() async {
50
Hive.registerAdapter(TradeAdapter(), 3);
51
Hive.registerAdapter(WalletInfoAdapter(), 4);
52
Hive.registerAdapter(WalletTypeAdapter(), 5);
53
+ Hive.registerAdapter(TemplateAdapter(), 6);
54
55
final secureStorage = FlutterSecureStorage();
56
final transactionDescriptionsBoxKey = await getEncryptionKey(
@@ -65,6 +68,7 @@ void main() async {
68
final trades =
69
await Hive.openBox<Trade>(Trade.boxName, encryptionKey: tradesBoxKey);
70
final walletInfoSource = await Hive.openBox<WalletInfo>(WalletInfo.boxName);
71
+ final templates = await Hive.openBox<Template>(Template.boxName);
72
73
final sharedPreferences = await SharedPreferences.getInstance();
74
final walletService = WalletService();
@@ -101,6 +105,7 @@ void main() async {
105
final loginStore = LoginStore(
106
sharedPreferences: sharedPreferences, walletsService: walletListService);
107
final seedLanguageStore = SeedLanguageStore();
108
+ final sendTemplateStore = SendTemplateStore(templateSource: templates);
109
110
setReactions(
111
settingsStore: settingsStore,
@@ -126,7 +131,8 @@ void main() async {
131
Provider(create: (_) => nodes),
132
Provider(create: (_) => transactionDescriptions),
133
Provider(create: (_) => trades),
129
- Provider(create: (_) => seedLanguageStore)
134
+ Provider(create: (_) => seedLanguageStore),
135
+ Provider(create: (_) => sendTemplateStore),
136
], child: CakeWalletApp()));
137
}
138
lib/router.dart
+8
@@ -88,6 +88,7 @@ import 'package:cake_wallet/src/screens/seed/create_seed_page.dart';
88
import 'package:cake_wallet/src/screens/dashboard/create_dashboard_page.dart';
89
import 'package:cake_wallet/src/screens/welcome/create_welcome_page.dart';
90
import 'package:cake_wallet/src/screens/new_wallet/new_wallet_type_page.dart';
91
+import 'package:cake_wallet/src/screens/send/send_template_page.dart';
92
93
class Router {
94
static Route<dynamic> generateRoute(
@@ -236,6 +237,13 @@ class Router {
237
transactionDescriptions: transactionDescriptions)),
238
], child: SendPage()));
239
240
+ case Routes.sendTemplate:
241
+ return CupertinoPageRoute<void>(
242
+ builder: (_) => SendTemplatePage(
243
+ sendStore: settings.arguments as SendStore,
244
+ )
245
+ );
246
+
247
case Routes.receive:
248
return CupertinoPageRoute<void>(
249
fullscreenDialog: true,
lib/routes.dart
+1
@@ -45,4 +45,5 @@ class Routes {
45
static const faq = '/faq';
46
static const changeLanguage = '/change_language';
47
static const newWalletType = '/new_wallet_type';
48
+ static const sendTemplate = '/send_template';
49
}
\ No newline at end of file
lib/src/domain/common/template.dart
new
+22
@@ -0,0 +1,22 @@
1
+import 'package:hive/hive.dart';
2
+
3
+part 'template.g.dart';
4
+
5
+@HiveType()
6
+class Template extends HiveObject {
7
+ Template({this.name, this.address, this.cryptoCurrency, this.amount});
8
+
9
+ static const boxName = 'Template';
10
+
11
+ @HiveField(0)
12
+ String name;
13
+
14
+ @HiveField(1)
15
+ String address;
16
+
17
+ @HiveField(2)
18
+ String cryptoCurrency;
19
+
20
+ @HiveField(3)
21
+ String amount;
22
+}
\ No newline at end of file
lib/src/screens/send/send_page.dart
+64
-41
@@ -27,6 +27,8 @@ import 'package:cake_wallet/src/widgets/alert_with_one_action.dart';
27
import 'package:cake_wallet/src/widgets/alert_with_two_actions.dart';
28
import 'package:cake_wallet/src/screens/send/widgets/confirm_sending_alert.dart';
29
import 'package:cake_wallet/src/screens/send/widgets/sending_alert.dart';
30
+import 'package:cake_wallet/src/screens/send/widgets/template_tile.dart';
31
+import 'package:cake_wallet/src/stores/send_template/send_template_store.dart';
32
33
class SendPage extends BasePage {
34
@override
@@ -97,6 +99,7 @@ class SendFormState extends State<SendForm> {
99
final balanceStore = Provider.of<BalanceStore>(context);
100
final walletStore = Provider.of<WalletStore>(context);
101
final syncStore = Provider.of<SyncStore>(context);
102
+ final sendTemplateStore = Provider.of<SendTemplateStore>(context);
103
104
_setEffects(context);
105
@@ -280,7 +283,7 @@ class SendFormState extends State<SendForm> {
283
mainAxisAlignment: MainAxisAlignment.start,
284
children: <Widget>[
285
Text(
283
- 'Templates',
286
+ S.of(context).send_templates,
287
style: TextStyle(
288
fontSize: 18,
289
fontWeight: FontWeight.w600,
@@ -294,47 +297,67 @@ class SendFormState extends State<SendForm> {
297
height: 40,
298
width: double.infinity,
299
padding: EdgeInsets.only(left: 24),
297
- child: ListView.builder(
298
- scrollDirection: Axis.horizontal,
299
- itemCount: 1,
300
- itemBuilder: (context, index) {
301
-
302
- if (index == 0) {
303
- return GestureDetector(
304
- onTap: () {},
305
- child: Container(
306
- padding: EdgeInsets.only(right: 10),
307
- child: DottedBorder(
308
- borderType: BorderType.RRect,
309
- dashPattern: [8, 4],
310
- color: PaletteDark.menuList,
311
- strokeWidth: 2,
312
- radius: Radius.circular(20),
300
+ child: Observer(
301
+ builder: (_) {
302
+ final itemCount = sendTemplateStore.templates.length + 1;
303
+
304
+ return ListView.builder(
305
+ scrollDirection: Axis.horizontal,
306
+ itemCount: itemCount,
307
+ itemBuilder: (context, index) {
308
+
309
+ if (index == 0) {
310
+ return GestureDetector(
311
+ onTap: () => Navigator.of(context)
312
+ .pushNamed(Routes.sendTemplate, arguments: sendStore),
313
child: Container(
314
- height: 40,
315
- width: 75,
316
- padding: EdgeInsets.only(left: 10, right: 10),
317
- alignment: Alignment.center,
318
- decoration: BoxDecoration(
319
- borderRadius: BorderRadius.all(Radius.circular(20)),
320
- color: Colors.transparent,
321
- ),
322
- child: Text(
323
- 'New',
324
- style: TextStyle(
325
- fontSize: 14,
326
- fontWeight: FontWeight.w600,
327
- color: PaletteDark.walletCardText
328
- ),
314
+ padding: EdgeInsets.only(right: 10),
315
+ child: DottedBorder(
316
+ borderType: BorderType.RRect,
317
+ dashPattern: [8, 4],
318
+ color: PaletteDark.menuList,
319
+ strokeWidth: 2,
320
+ radius: Radius.circular(20),
321
+ child: Container(
322
+ height: 40,
323
+ width: 75,
324
+ padding: EdgeInsets.only(left: 10, right: 10),
325
+ alignment: Alignment.center,
326
+ decoration: BoxDecoration(
327
+ borderRadius: BorderRadius.all(Radius.circular(20)),
328
+ color: Colors.transparent,
329
+ ),
330
+ child: Text(
331
+ S.of(context).send_new,
332
+ style: TextStyle(
333
+ fontSize: 14,
334
+ fontWeight: FontWeight.w600,
335
+ color: PaletteDark.walletCardText
336
+ ),
337
+ ),
338
+ )
339
),
330
- )
331
- ),
332
- ),
333
- );
334
- }
340
+ ),
341
+ );
342
+ }
343
+
344
+ index -= 1;
345
+
346
+ final template = sendTemplateStore.templates[index];
347
336
- return Container();
337
- }
348
+ return TemplateTile(
349
+ name: template.name,
350
+ amount: template.amount,
351
+ cryptoCurrency: template.cryptoCurrency,
352
+ onTap: () {
353
+ _addressController.text = template.address;
354
+ _cryptoAmountController.text = template.amount;
355
+ getOpenaliasRecord(context);
356
+ }
357
+ );
358
+ }
359
+ );
360
+ }
361
),
362
)
363
],
@@ -450,9 +473,9 @@ class SendFormState extends State<SendForm> {
473
builder: (BuildContext context) {
474
return ConfirmSendingAlert(
475
alertTitle: S.of(context).confirm_sending,
453
- amount: 'Amount:',
476
+ amount: S.of(context).send_amount,
477
amountValue: sendStore.pendingTransaction.amount,
455
- fee: 'Fee:',
478
+ fee: S.of(context).send_fee,
479
feeValue: sendStore.pendingTransaction.fee,
480
leftButtonText: S.of(context).ok,
481
rightButtonText: S.of(context).cancel,
lib/src/screens/send/send_template_page.dart
new
+311
@@ -0,0 +1,311 @@
1
+import 'package:cake_wallet/src/widgets/scollable_with_bottom_section.dart';
2
+import 'package:flutter/cupertino.dart';
3
+import 'package:flutter/material.dart';
4
+import 'package:flutter/services.dart';
5
+import 'package:flutter_mobx/flutter_mobx.dart';
6
+import 'package:mobx/mobx.dart';
7
+import 'package:provider/provider.dart';
8
+import 'package:cake_wallet/palette.dart';
9
+import 'package:cake_wallet/src/widgets/address_text_field.dart';
10
+import 'package:cake_wallet/src/widgets/primary_button.dart';
11
+import 'package:cake_wallet/src/stores/settings/settings_store.dart';
12
+import 'package:cake_wallet/src/stores/balance/balance_store.dart';
13
+import 'package:cake_wallet/src/stores/send/send_store.dart';
14
+import 'package:cake_wallet/src/screens/base_page.dart';
15
+import 'package:cake_wallet/generated/i18n.dart';
16
+import 'package:cake_wallet/src/widgets/top_panel.dart';
17
+import 'package:cake_wallet/src/stores/send_template/send_template_store.dart';
18
+
19
+class SendTemplatePage extends BasePage {
20
+ SendTemplatePage({@required this.sendStore});
21
+
22
+ final SendStore sendStore;
23
+
24
+ @override
25
+ String get title => S.current.send_title;
26
+
27
+ @override
28
+ Color get backgroundColor => PaletteDark.menuList;
29
+
30
+ @override
31
+ bool get resizeToAvoidBottomPadding => false;
32
+
33
+ @override
34
+ Widget body(BuildContext context) => SendTemplateForm(sendStore);
35
+}
36
+
37
+class SendTemplateForm extends StatefulWidget {
38
+ SendTemplateForm(this.sendStore);
39
+
40
+ final SendStore sendStore;
41
+
42
+ @override
43
+ SendTemplateFormState createState() => SendTemplateFormState(sendStore);
44
+}
45
+
46
+class SendTemplateFormState extends State<SendTemplateForm> {
47
+ SendTemplateFormState(this.sendStore);
48
+
49
+ final SendStore sendStore;
50
+
51
+ final _nameController = TextEditingController();
52
+ final _addressController = TextEditingController();
53
+ final _cryptoAmountController = TextEditingController();
54
+ final _fiatAmountController = TextEditingController();
55
+
56
+ final _formKey = GlobalKey<FormState>();
57
+
58
+ bool _effectsInstalled = false;
59
+
60
+ @override
61
+ void dispose() {
62
+ _nameController.dispose();
63
+ _addressController.dispose();
64
+ _cryptoAmountController.dispose();
65
+ _fiatAmountController.dispose();
66
+ super.dispose();
67
+ }
68
+
69
+ @override
70
+ Widget build(BuildContext context) {
71
+ final settingsStore = Provider.of<SettingsStore>(context);
72
+ final balanceStore = Provider.of<BalanceStore>(context);
73
+ final sendTemplateStore = Provider.of<SendTemplateStore>(context);
74
+
75
+ _setEffects(context, sendStore);
76
+
77
+ return Container(
78
+ color: PaletteDark.historyPanel,
79
+ child: ScrollableWithBottomSection(
80
+ contentPadding: EdgeInsets.only(bottom: 24),
81
+ content: Column(
82
+ children: <Widget>[
83
+ TopPanel(
84
+ color: PaletteDark.menuList,
85
+ widget: Form(
86
+ key: _formKey,
87
+ child: Column(children: <Widget>[
88
+ TextFormField(
89
+ style: TextStyle(
90
+ fontSize: 16.0,
91
+ color: Colors.white),
92
+ controller: _nameController,
93
+ decoration: InputDecoration(
94
+ hintStyle: TextStyle(
95
+ fontSize: 16.0,
96
+ color: PaletteDark.walletCardText),
97
+ hintText: S.of(context).send_name,
98
+ focusedBorder: UnderlineInputBorder(
99
+ borderSide: BorderSide(
100
+ color: PaletteDark.walletCardSubAddressField,
101
+ width: 1.0)),
102
+ enabledBorder: UnderlineInputBorder(
103
+ borderSide: BorderSide(
104
+ color: PaletteDark.walletCardSubAddressField,
105
+ width: 1.0))),
106
+ validator: (value) {
107
+ sendTemplateStore.validateTemplate(value);
108
+ return sendTemplateStore.errorMessage;
109
+ },
110
+ ),
111
+ Padding(
112
+ padding: EdgeInsets.only(top: 20),
113
+ child: AddressTextField(
114
+ controller: _addressController,
115
+ placeholder: S.of(context).send_monero_address,
116
+ onURIScanned: (uri) {
117
+ var address = '';
118
+ var amount = '';
119
+
120
+ if (uri != null) {
121
+ address = uri.path;
122
+ amount = uri.queryParameters['tx_amount'];
123
+ } else {
124
+ address = uri.toString();
125
+ }
126
+
127
+ _addressController.text = address;
128
+ _cryptoAmountController.text = amount;
129
+ },
130
+ options: [
131
+ AddressTextFieldOption.qrCode,
132
+ AddressTextFieldOption.addressBook
133
+ ],
134
+ validator: (value) {
135
+ sendTemplateStore.validateTemplate(value);
136
+ return sendTemplateStore.errorMessage;
137
+ },
138
+ ),
139
+ ),
140
+ Observer(
141
+ builder: (_) {
142
+ return Padding(
143
+ padding: const EdgeInsets.only(top: 20),
144
+ child: TextFormField(
145
+ style: TextStyle(
146
+ fontSize: 16.0,
147
+ color: Colors.white
148
+ ),
149
+ controller: _cryptoAmountController,
150
+ keyboardType: TextInputType.numberWithOptions(
151
+ signed: false, decimal: true),
152
+ inputFormatters: [
153
+ BlacklistingTextInputFormatter(
154
+ RegExp('[\\-|\\ |\\,]'))
155
+ ],
156
+ decoration: InputDecoration(
157
+ prefixIcon: Padding(
158
+ padding: EdgeInsets.only(top: 12),
159
+ child: Text('XMR:',
160
+ style: TextStyle(
161
+ fontSize: 16,
162
+ fontWeight: FontWeight.bold,
163
+ color: Colors.white,
164
+ )),
165
+ ),
166
+ suffixIcon: Padding(
167
+ padding: EdgeInsets.only(
168
+ bottom: 5
169
+ ),
170
+ child: Row(
171
+ mainAxisSize: MainAxisSize.min,
172
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
173
+ children: <Widget>[
174
+ Container(
175
+ width: MediaQuery.of(context).size.width/2,
176
+ alignment: Alignment.centerLeft,
177
+ child: Text(
178
+ ' / ' + balanceStore.unlockedBalance,
179
+ maxLines: 1,
180
+ overflow: TextOverflow.ellipsis,
181
+ style: TextStyle(
182
+ fontSize: 16,
183
+ color: PaletteDark.walletCardText
184
+ )
185
+ ),
186
+ ),
187
+ ],
188
+ ),
189
+ ),
190
+ hintStyle: TextStyle(
191
+ fontSize: 16.0,
192
+ color: Colors.white),
193
+ hintText: '0.0000',
194
+ focusedBorder: UnderlineInputBorder(
195
+ borderSide: BorderSide(
196
+ color: PaletteDark.walletCardSubAddressField,
197
+ width: 1.0)),
198
+ enabledBorder: UnderlineInputBorder(
199
+ borderSide: BorderSide(
200
+ color: PaletteDark.walletCardSubAddressField,
201
+ width: 1.0))),
202
+ validator: (value) {
203
+ sendStore.validateXMR(
204
+ value, balanceStore.unlockedBalance);
205
+ return sendStore.errorMessage;
206
+ }),
207
+ );
208
+ }
209
+ ),
210
+ Padding(
211
+ padding: const EdgeInsets.only(top: 20),
212
+ child: TextFormField(
213
+ style: TextStyle(
214
+ fontSize: 16.0,
215
+ color: Colors.white),
216
+ controller: _fiatAmountController,
217
+ keyboardType: TextInputType.numberWithOptions(
218
+ signed: false, decimal: true),
219
+ inputFormatters: [
220
+ BlacklistingTextInputFormatter(
221
+ RegExp('[\\-|\\ |\\,]'))
222
+ ],
223
+ decoration: InputDecoration(
224
+ prefixIcon: Padding(
225
+ padding: EdgeInsets.only(top: 12),
226
+ child: Text(
227
+ '${settingsStore.fiatCurrency.toString()}:',
228
+ style: TextStyle(
229
+ fontSize: 16,
230
+ fontWeight: FontWeight.bold,
231
+ color: Colors.white,
232
+ )),
233
+ ),
234
+ hintStyle: TextStyle(
235
+ fontSize: 16.0,
236
+ color: PaletteDark.walletCardText),
237
+ hintText: '0.00',
238
+ focusedBorder: UnderlineInputBorder(
239
+ borderSide: BorderSide(
240
+ color: PaletteDark.walletCardSubAddressField,
241
+ width: 1.0)),
242
+ enabledBorder: UnderlineInputBorder(
243
+ borderSide: BorderSide(
244
+ color: PaletteDark.walletCardSubAddressField,
245
+ width: 1.0)))),
246
+ ),
247
+ ]),
248
+ ),
249
+ ),
250
+ ],
251
+ ),
252
+ bottomSectionPadding: EdgeInsets.only(left: 24, right: 24, bottom: 24),
253
+ bottomSection: PrimaryButton(
254
+ onPressed: () {
255
+ if (_formKey.currentState.validate()) {
256
+ sendTemplateStore.addTemplate(
257
+ name: _nameController.text,
258
+ address: _addressController.text,
259
+ cryptoCurrency: 'XMR',
260
+ amount: _cryptoAmountController.text
261
+ );
262
+ sendTemplateStore.update();
263
+ Navigator.of(context).pop();
264
+ }
265
+ },
266
+ text: S.of(context).save,
267
+ color: Colors.blue,
268
+ textColor: Colors.white
269
+ ),
270
+ ),
271
+ );
272
+ }
273
+
274
+ void _setEffects(BuildContext context, SendStore sendStore) {
275
+ if (_effectsInstalled) {
276
+ return;
277
+ }
278
+
279
+ //final sendStore = Provider.of<SendStore>(context);
280
+
281
+ reaction((_) => sendStore.fiatAmount, (String amount) {
282
+ if (amount != _fiatAmountController.text) {
283
+ _fiatAmountController.text = amount;
284
+ }
285
+ });
286
+
287
+ reaction((_) => sendStore.cryptoAmount, (String amount) {
288
+ if (amount != _cryptoAmountController.text) {
289
+ _cryptoAmountController.text = amount;
290
+ }
291
+ });
292
+
293
+ _fiatAmountController.addListener(() {
294
+ final fiatAmount = _fiatAmountController.text;
295
+
296
+ if (sendStore.fiatAmount != fiatAmount) {
297
+ sendStore.changeFiatAmount(fiatAmount);
298
+ }
299
+ });
300
+
301
+ _cryptoAmountController.addListener(() {
302
+ final cryptoAmount = _cryptoAmountController.text;
303
+
304
+ if (sendStore.cryptoAmount != cryptoAmount) {
305
+ sendStore.changeCryptoAmount(cryptoAmount);
306
+ }
307
+ });
308
+
309
+ _effectsInstalled = true;
310
+ }
311
+}
\ No newline at end of file
lib/src/screens/send/widgets/sending_alert.dart
+3
-3
@@ -41,7 +41,7 @@ class SendingAlertState extends State<SendingAlert> {
41
child: Padding(
42
padding: EdgeInsets.only(top: 220, left: 24, right: 24),
43
child: Text(
44
- 'Your Monero was successfully sent',
44
+ S.of(context).send_success,
45
textAlign: TextAlign.center,
46
style: TextStyle(
47
fontSize: 22,
@@ -58,7 +58,7 @@ class SendingAlertState extends State<SendingAlert> {
58
bottom: 24,
59
child: PrimaryButton(
60
onPressed: () => Navigator.of(context).pop(),
61
- text: 'Got it',
61
+ text: S.of(context).send_got_it,
62
color: Colors.blue,
63
textColor: Colors.white
64
)
@@ -84,7 +84,7 @@ class SendingAlertState extends State<SendingAlert> {
84
child: Padding(
85
padding: EdgeInsets.only(top: 220),
86
child: Text(
87
- 'Sending...',
87
+ S.of(context).send_sending,
88
textAlign: TextAlign.center,
89
style: TextStyle(
90
fontSize: 22,
lib/src/screens/send/widgets/template_tile.dart
new
+76
@@ -0,0 +1,76 @@
1
+import 'package:flutter/material.dart';
2
+import 'package:cake_wallet/palette.dart';
3
+
4
+class TemplateTile extends StatelessWidget {
5
+ TemplateTile({
6
+ @required this.name,
7
+ @required this.amount,
8
+ @required this.cryptoCurrency,
9
+ @required this.onTap
10
+ });
11
+
12
+ final String name;
13
+ final String amount;
14
+ final String cryptoCurrency;
15
+ final VoidCallback onTap;
16
+
17
+ final toIcon = Image.asset('assets/images/to_icon.png');
18
+
19
+ @override
20
+ Widget build(BuildContext context) {
21
+ return Container(
22
+ padding: EdgeInsets.only(right: 10),
23
+ child: GestureDetector(
24
+ onTap: onTap,
25
+ child: Container(
26
+ height: 40,
27
+ padding: EdgeInsets.only(left: 24, right: 24),
28
+ decoration: BoxDecoration(
29
+ borderRadius: BorderRadius.all(Radius.circular(20)),
30
+ color: PaletteDark.menuList
31
+ ),
32
+ child: Row(
33
+ mainAxisAlignment: MainAxisAlignment.start,
34
+ mainAxisSize: MainAxisSize.min,
35
+ children: <Widget>[
36
+ Text(
37
+ amount,
38
+ style: TextStyle(
39
+ fontSize: 16,
40
+ fontWeight: FontWeight.w600,
41
+ color: Colors.white
42
+ ),
43
+ ),
44
+ Padding(
45
+ padding: EdgeInsets.only(left: 5),
46
+ child: Text(
47
+ cryptoCurrency,
48
+ style: TextStyle(
49
+ fontSize: 16,
50
+ fontWeight: FontWeight.w600,
51
+ color: Colors.white
52
+ ),
53
+ ),
54
+ ),
55
+ Padding(
56
+ padding: EdgeInsets.only(left: 5),
57
+ child: toIcon,
58
+ ),
59
+ Padding(
60
+ padding: EdgeInsets.only(left: 5),
61
+ child: Text(
62
+ name,
63
+ style: TextStyle(
64
+ fontSize: 16,
65
+ fontWeight: FontWeight.w600,
66
+ color: Colors.white
67
+ ),
68
+ ),
69
+ ),
70
+ ],
71
+ ),
72
+ ),
73
+ ),
74
+ );
75
+ }
76
+}
\ No newline at end of file
lib/src/stores/send_template/send_template_store.dart
new
+48
@@ -0,0 +1,48 @@
1
+import 'dart:async';
2
+import 'package:mobx/mobx.dart';
3
+import 'package:hive/hive.dart';
4
+import 'package:cake_wallet/src/domain/common/template.dart';
5
+import 'package:cake_wallet/generated/i18n.dart';
6
+
7
+part 'send_template_store.g.dart';
8
+
9
+class SendTemplateStore = SendTemplateBase with _$SendTemplateStore;
10
+
11
+abstract class SendTemplateBase with Store {
12
+ SendTemplateBase({this.templateSource}) {
13
+ templates = ObservableList<Template>();
14
+ update();
15
+ }
16
+
17
+ @observable
18
+ ObservableList<Template> templates;
19
+
20
+ @observable
21
+ bool isValid;
22
+
23
+ @observable
24
+ String errorMessage;
25
+
26
+ Box<Template> templateSource;
27
+
28
+ @action
29
+ void update() =>
30
+ templates.replaceRange(0, templates.length, templateSource.values.toList());
31
+
32
+ @action
33
+ Future addTemplate({String name, String address, String cryptoCurrency, String amount}) async {
34
+ final template = Template(name: name, address: address,
35
+ cryptoCurrency: cryptoCurrency, amount: amount);
36
+ await templateSource.add(template);
37
+ }
38
+
39
+ @action
40
+ Future remove({Template template}) async => await template.delete();
41
+
42
+ void validateTemplate(String value) {
43
+ const pattern = '''^[^`,'"]{1,106}\$''';
44
+ final regExp = RegExp(pattern);
45
+ isValid = regExp.hasMatch(value);
46
+ errorMessage = isValid ? null : S.current.error_text_template;
47
+ }
48
+}
\ No newline at end of file
res/values/strings_de.arb
+9
@@ -185,6 +185,14 @@
185
"send_estimated_fee" : "Geschätzte Gebühr:",
186
"send_priority" : "Derzeit ist die Gebühr auf festgelegt ${transactionPriority} priorität.\nDie Transaktionspriorität kann in den Einstellungen angepasst werden",
187
"send_creating_transaction" : "Transaktion erstellen",
188
+ "send_templates" : "Vorlagen",
189
+ "send_new" : "Neu",
190
+ "send_amount" : "Menge:",
191
+ "send_fee" : "Gebühr:",
192
+ "send_name" : "Name",
193
+ "send_got_it" : "Ich habs",
194
+ "send_sending" : "Senden...",
195
+ "send_success" : "Ihr Monero wurde erfolgreich gesendet",
196
197
198
"settings_title" : "die Einstellungen",
@@ -291,6 +299,7 @@
299
"error_text_minimal_limit" : "Handel für ${provider} wird nicht erstellt. Menge ist weniger als minimal: ${min} ${currency}",
300
"error_text_maximum_limit" : "Handel für ${provider} wird nicht erstellt. Menge ist mehr als maximal: ${max} ${currency}",
301
"error_text_limits_loading_failed" : "Handel für ${provider} wird nicht erstellt. Das Laden der Limits ist fehlgeschlagen",
302
+ "error_text_template" : "Vorlagenname und Adresse dürfen nicht enthalten ` , ' \" symbole\nund muss zwischen 1 und 106 Zeichen lang sein",
303
304
305
"auth_store_ban_timeout" : "Auszeit verbieten",
res/values/strings_en.arb
+9
@@ -185,6 +185,14 @@
185
"send_estimated_fee" : "Estimated fee:",
186
"send_priority" : "Currently the fee is set at ${transactionPriority} priority.\nTransaction priority can be adjusted in the settings",
187
"send_creating_transaction" : "Creating transaction",
188
+ "send_templates" : "Templates",
189
+ "send_new" : "New",
190
+ "send_amount" : "Amount:",
191
+ "send_fee" : "Fee:",
192
+ "send_name" : "Name",
193
+ "send_got_it" : "Got it",
194
+ "send_sending" : "Sending...",
195
+ "send_success" : "Your Monero was successfully sent",
196
197
198
"settings_title" : "Settings",
@@ -291,6 +299,7 @@
299
"error_text_minimal_limit" : "Trade for ${provider} is not created. Amount is less then minimal: ${min} ${currency}",
300
"error_text_maximum_limit" : "Trade for ${provider} is not created. Amount is more then maximum: ${max} ${currency}",
301
"error_text_limits_loading_failed" : "Trade for ${provider} is not created. Limits loading failed",
302
+ "error_text_template" : "Template name and address can't contain ` , ' \" symbols\nand must be between 1 and 106 characters long",
303
304
305
"auth_store_ban_timeout" : "ban_timeout",
res/values/strings_es.arb
+9
@@ -185,6 +185,14 @@
185
"send_estimated_fee" : "Tarifa estimada:",
186
"send_priority" : "Actualmente la tarifa se establece en ${transactionPriority} prioridad.\nLa prioridad de la transacción se puede ajustar en la configuración",
187
"send_creating_transaction" : "Creando transacción",
188
+ "send_templates" : "Plantillas",
189
+ "send_new" : "Nuevo",
190
+ "send_amount" : "Cantidad:",
191
+ "send_fee" : "Cuota:",
192
+ "send_name" : "Nombre",
193
+ "send_got_it" : "Entendido",
194
+ "send_sending" : "Enviando...",
195
+ "send_success" : "Su Monero fue enviado con éxito",
196
197
198
"settings_title" : "Configuraciones",
@@ -291,6 +299,7 @@
299
"error_text_minimal_limit" : "El comercio por ${provider} no se crea. La cantidad es menos que mínima: ${min} ${currency}",
300
"error_text_maximum_limit" : "El comercio por ${provider} no se crea. La cantidad es más que el máximo: ${max} ${currency}",
301
"error_text_limits_loading_failed" : "El comercio por ${provider} no se crea. Límites de carga fallidos",
302
+ "error_text_template" : "El nombre y la dirección de la plantilla no pueden contener símbolos ` , '\" \ny debe tener entre 1 y 106 caracteres de longitud",
303
304
305
"auth_store_ban_timeout" : "prohibición de tiempo de espera",
res/values/strings_hi.arb
+9
@@ -185,6 +185,14 @@
185
"send_estimated_fee" : "अनुमानित शुल्क:",
186
"send_priority" : "वर्तमान में शुल्क निर्धारित है ${transactionPriority} प्राथमिकता.\nलेन-देन की प्राथमिकता को सेटिंग्स में समायोजित किया जा सकता है",
187
"send_creating_transaction" : "लेन-देन बनाना",
188
+ "send_templates" : "टेम्पलेट्स",
189
+ "send_new" : "नया",
190
+ "send_amount" : "रकम:",
191
+ "send_fee" : "शुल्क:",
192
+ "send_name" : "नाम",
193
+ "send_got_it" : "समझ गया",
194
+ "send_sending" : "भेजना...",
195
+ "send_success" : "आपका Monero सफलतापूर्वक भेजा गया",
196
197
198
"settings_title" : "सेटिंग्स",
@@ -291,6 +299,7 @@
299
"error_text_minimal_limit" : "व्यापार ${provider} के लिए नहीं बनाया गया है। राशि कम है तो न्यूनतम: ${min} ${currency}",
300
"error_text_maximum_limit" : "व्यापार ${provider} के लिए नहीं बनाया गया है। राशि अधिक है तो अधिकतम: ${max} ${currency}",
301
"error_text_limits_loading_failed" : "व्यापार ${provider} के लिए नहीं बनाया गया है। लोडिंग की सीमाएं विफल रहीं",
302
+ "error_text_template" : "टेम्प्लेट का नाम और पता नहीं हो सकता ` , ' \" प्रतीकों\nऔर 1 और 106 वर्णों के बीच लंबा होना चाहिए",
303
304
305
"auth_store_ban_timeout" : "समय की पाबंदी",
res/values/strings_ja.arb
+9
@@ -185,6 +185,14 @@
185
"send_estimated_fee" : "見積手数料:",
186
"send_priority" : "現在、料金は ${transactionPriority} 優先度.\nトランザクションの優先度は設定で調整できます",
187
"send_creating_transaction" : "トランザクションを作成する",
188
+ "send_templates" : "テンプレート",
189
+ "send_new" : "新着",
190
+ "send_amount" : "量:",
191
+ "send_fee" : "費用:",
192
+ "send_name" : "名前",
193
+ "send_got_it" : "とった",
194
+ "send_sending" : "送信...",
195
+ "send_success" : "Moneroが送信されました",
196
197
198
"settings_title" : "設定",
@@ -291,6 +299,7 @@
299
"error_text_minimal_limit" : "${provider} の取引は作成されません。 金額は最小額より少ない: ${min} ${currency}",
300
"error_text_maximum_limit" : "${provider} の取引は作成されません。 金額は最大値を超えています: ${max} ${currency}",
301
"error_text_limits_loading_failed" : "${provider} の取引は作成されません。 制限の読み込みに失敗しました",
302
+ "error_text_template" : "テンプレートの名前とアドレスに含めることはできません ` , ' \" シンボル\n1〜106文字の長さである必要があります",
303
304
305
"auth_store_ban_timeout" : "禁止タイムアウト",
res/values/strings_ko.arb
+9
@@ -185,6 +185,14 @@
185
"send_estimated_fee" : "예상 수수료:",
186
"send_priority" : "현재 수수료는 ${transactionPriority} 우선 순위.\n거래 우선 순위는 설정에서 조정할 수 있습니다",
187
"send_creating_transaction" : "거래 생성",
188
+ "send_templates" : "템플릿",
189
+ "send_new" : "새로운",
190
+ "send_amount" : "양:",
191
+ "send_fee" : "회비:",
192
+ "send_name" : "이름",
193
+ "send_got_it" : "알았다",
194
+ "send_sending" : "배상...",
195
+ "send_success" : "Monero가 성공적으로 전송되었습니다",
196
197
198
"settings_title" : "설정",
@@ -291,6 +299,7 @@
299
"error_text_minimal_limit" : "거래 ${provider} 가 생성되지 않습니다. 금액이 최소보다 적습니다. ${min} ${currency}",
300
"error_text_maximum_limit" : "거래 ${provider} 가 생성되지 않습니다. 금액이 최대 값보다 많습니다. ${max} ${currency}",
301
"error_text_limits_loading_failed" : "거래 ${provider} 가 생성되지 않습니다. 로딩 실패",
302
+ "error_text_template" : "템플릿 이름과 주소는 포함 할 수 없습니다 ` , ' \" 기호 \n1 ~ 106 자 사이 여야합니다",
303
304
305
"auth_store_ban_timeout" : "타임 아웃 금지",
res/values/strings_nl.arb
+9
@@ -185,6 +185,14 @@
185
"send_estimated_fee" : "Geschatte vergoeding:",
186
"send_priority" : "Momenteel is de vergoeding vastgesteld op ${transactionPriority} prioriteit.\nTransactieprioriteit kan worden aangepast in de instellingen",
187
"send_creating_transaction" : "Transactie maken",
188
+ "send_templates" : "Sjablonen",
189
+ "send_new" : "Nieuw",
190
+ "send_amount" : "Bedrag:",
191
+ "send_fee" : "Vergoeding:",
192
+ "send_name" : "Naam",
193
+ "send_got_it" : "Ik snap het",
194
+ "send_sending" : "Bezig met verzenden...",
195
+ "send_success" : "Uw Monero is succesvol verzonden",
196
197
198
"settings_title" : "Instellingen",
@@ -291,6 +299,7 @@
299
"error_text_minimal_limit" : "Ruil voor ${provider} is niet gemaakt. Bedrag is minder dan minimaal: ${min} ${currency}",
300
"error_text_maximum_limit" : "Ruil voor ${provider} is niet gemaakt. Bedrag is meer dan maximaal: ${max} ${currency}",
301
"error_text_limits_loading_failed" : "Ruil voor ${provider} is niet gemaakt. Beperkingen laden mislukt",
302
+ "error_text_template" : "Sjabloonnaam en -adres mogen niet bevatten ` , ' \" symbolen\nen moet tussen de 1 en 106 tekens lang zijn",
303
304
305
"auth_store_ban_timeout" : "time-out verbieden",
res/values/strings_pl.arb
+9
@@ -185,6 +185,14 @@
185
"send_estimated_fee" : "Szacowana opłata:",
186
"send_priority" : "Obecnie opłata ustalona jest na ${transactionPriority} priorytet.\nPriorytet transakcji można zmienić w ustawieniach",
187
"send_creating_transaction" : "Tworzenie transakcji",
188
+ "send_templates" : "Szablony",
189
+ "send_new" : "Nowy",
190
+ "send_amount" : "Ilość:",
191
+ "send_fee" : "Opłata:",
192
+ "send_name" : "Imię",
193
+ "send_got_it" : "Rozumiem",
194
+ "send_sending" : "Wysyłanie...",
195
+ "send_success" : "Twoje Monero zostało pomyślnie wysłane",
196
197
198
"settings_title" : "Ustawienia",
@@ -291,6 +299,7 @@
299
"error_text_minimal_limit" : "Wymiana dla ${provider} nie została utworzona. Kwota jest mniejsza niż minimalna: ${min} ${currency}",
300
"error_text_maximum_limit" : "Wymiana dla ${provider} nie została utworzona. Kwota jest większa niż maksymalna: ${max} ${currency}",
301
"error_text_limits_loading_failed" : "Wymiana dla ${provider} nie została utworzona. Ładowanie limitów nie powiodło się",
302
+ "error_text_template" : "Nazwa i adres szablonu nie mogą zawierać ` , ' \" symbolika\ni musi mieć od 1 do 106 znaków",
303
304
305
"auth_store_ban_timeout" : "przekroczenie limitu czasu",
res/values/strings_pt.arb
+9
@@ -185,6 +185,14 @@
185
"send_estimated_fee" : "Taxa estimada:",
186
"send_priority" : "Atualmente, a taxa está definida para a prioridade: ${transactionPriority}.\nA prioridade da transação pode ser ajustada nas configurações",
187
"send_creating_transaction" : "Criando transação",
188
+ "send_templates" : "Modelos",
189
+ "send_new" : "Novo",
190
+ "send_amount" : "Montante:",
191
+ "send_fee" : "Taxa:",
192
+ "send_name" : "Nome",
193
+ "send_got_it" : "Entendi",
194
+ "send_sending" : "Enviando...",
195
+ "send_success" : "Seu Monero foi enviado com sucesso",
196
197
198
"settings_title" : "Configurações",
@@ -291,6 +299,7 @@
299
"error_text_minimal_limit" : "A troca por ${provider} não é criada. O valor é menor que o mínimo: ${min} ${currency}",
300
"error_text_maximum_limit" : "A troca por ${provider} não é criada. O valor é superior ao máximo: ${max} ${currency}",
301
"error_text_limits_loading_failed" : "A troca por ${provider} não é criada. Falha no carregamento dos limites",
302
+ "error_text_template" : "O nome e o endereço do modelo não podem conter os símbolos ` , ' \" \ne deve ter entre 1 e 106 caracteres",
303
304
305
"auth_store_ban_timeout" : "ban_timeout",
res/values/strings_ru.arb
+9
@@ -185,6 +185,14 @@
185
"send_estimated_fee" : "Предполагаемая комиссия:",
186
"send_priority" : "Комиссия установлена в зависимости от приоритета: ${transactionPriority}.\nПриоритет транзакции может быть изменён в настройках",
187
"send_creating_transaction" : "Создать транзакцию",
188
+ "send_templates" : "Шаблоны",
189
+ "send_new" : "Новый",
190
+ "send_amount" : "Сумма:",
191
+ "send_fee" : "Комиссия:",
192
+ "send_name" : "Имя",
193
+ "send_got_it" : "Понял",
194
+ "send_sending" : "Отправка...",
195
+ "send_success" : "Ваш Monero был успешно отправлен",
196
197
198
"settings_title" : "Настройки",
@@ -291,6 +299,7 @@
299
"error_text_minimal_limit" : "Сделка для ${provider} не создана. Сумма меньше минимальной: ${min} ${currency}",
300
"error_text_maximum_limit" : "Сделка для ${provider} не создана. Сумма больше максимальной: ${max} ${currency}",
301
"error_text_limits_loading_failed" : "Сделка для ${provider} не создана. Ошибка загрузки лимитов",
302
+ "error_text_template" : "Имя и адрес шаблона не может содержать ` , ' \" символы\nи должно быть от 1 до 106 символов в длину",
303
304
305
"auth_store_ban_timeout" : "ban_timeout",
res/values/strings_uk.arb
+10
-1
@@ -185,6 +185,14 @@
185
"send_estimated_fee" : "Ймовірна комісія:",
186
"send_priority" : "Комісія встановлена в залежності від пріоритету: ${transactionPriority}.\nПріоритет транзакції може бути змінений в налаштуваннях",
187
"send_creating_transaction" : "Створити транзакцію",
188
+ "send_templates" : "Шаблони",
189
+ "send_new" : "Новий",
190
+ "send_amount" : "Сума:",
191
+ "send_fee" : "Комісія:",
192
+ "send_name" : "Ім'я",
193
+ "send_got_it" : "Зрозумів",
194
+ "send_sending" : "Відправлення...",
195
+ "send_success" : "Ваш Monero успішно надісланий",
196
197
198
"settings_title" : "Налаштування",
@@ -283,7 +291,7 @@
291
"error_text_payment_id" : "Ідентифікатор платежу може містити від 16 до 64 символів в hex",
292
"error_text_xmr" : "Значення XMR не може перевищувати доступний баланс.\nКількість цифр після коми повинно бути меншим або дорівнювати 12",
293
"error_text_fiat" : "Значення суми не може перевищувати доступний баланс.\nКількість цифр після коми повинно бути меншим або дорівнювати 2",
286
- "error_text_subaddress_name" : "Ім'я субадреси не може містити ` , ' \" символи\nі може бути від 1 до 32 символів в довжину",
294
+ "error_text_subaddress_name" : "Ім'я субадреси не може містити ` , ' \" символи\nі може бути від 1 до 20 символів в довжину",
295
"error_text_amount" : "Баланс може містити тільки цифри",
296
"error_text_wallet_name" : "Ім'я гаманця може містити тільки букви, цифри\nі повинно бути від 1 до 15 символів в довжину",
297
"error_text_keys" : "Ключі гаманця можуть містити тільки 64 символів в hex",
@@ -291,6 +299,7 @@
299
"error_text_minimal_limit" : "Операція для ${provider} не створена. Сума менша мінімальної: ${min} ${currency}",
300
"error_text_maximum_limit" : "Операція для ${provider} не створена. Сума більше максимальної: ${max} ${currency}",
301
"error_text_limits_loading_failed" : "Операція для ${provider} не створена. Помилка завантаження лімітів",
302
+ "error_text_template" : "Ім'я та адреса шаблону не може містити ` , ' \" символи\nі може бути від 1 до 106 символів в довжину",
303
304
305
"auth_store_ban_timeout" : "ban_timeout",
res/values/strings_zh.arb
+9
@@ -185,6 +185,14 @@
185
"send_estimated_fee" : "预估费用:",
186
"send_priority" : "目前,费用设置为 ${transactionPriority} 优先.\n交易优先级可以在设置中进行调整",
187
"send_creating_transaction" : "创建交易",
188
+ "send_templates" : "範本",
189
+ "send_new" : "新",
190
+ "send_amount" : "量:",
191
+ "send_fee" : "費用:",
192
+ "send_name" : "名稱",
193
+ "send_got_it" : "得到它了",
194
+ "send_sending" : "正在發送...",
195
+ "send_success" : "你Monero已成功發送",
196
197
198
"settings_title" : "设定值",
@@ -291,6 +299,7 @@
299
"error_text_minimal_limit" : "未創建 ${provider} 交易。 金額少於最小值:${min} ${currency}",
300
"error_text_maximum_limit" : "未創建 ${provider} 交易。 金額大於最大值:${max} ${currency}",
301
"error_text_limits_loading_failed" : "未創建 ${provider} 交易。 限制加載失敗",
302
+ "error_text_template" : "模板名稱和地址不能包含`,' \" 符号\n并且必须在1到106个字符之间",
303
304
305
"auth_store_ban_timeout" : "禁止超时",