CAKE-28 | created information page, exchange trade view model, exchange trade item; added trade property to trades store; changed filtered method (trade filter store); added tradesStore property to exchange view model; applied information page to exchange trade page
Oleksandr Sobol committed
Aug 26, 2020 at 20:31 UTC
76cde0530de6a02585408e514d0c6e45cee84b06
28 files changed
+343
-110
lib/di.dart
+19
-3
@@ -4,6 +4,8 @@ import 'package:cake_wallet/src/domain/common/node.dart';
4
import 'package:cake_wallet/src/domain/exchange/trade.dart';
5
import 'package:cake_wallet/src/screens/contact/contact_list_page.dart';
6
import 'package:cake_wallet/src/screens/contact/contact_page.dart';
7
+import 'package:cake_wallet/src/screens/exchange_trade/exchange_confirm_page.dart';
8
+import 'package:cake_wallet/src/screens/exchange_trade/exchange_trade_page.dart';
9
import 'package:cake_wallet/src/screens/nodes/node_create_or_edit_page.dart';
10
import 'package:cake_wallet/src/screens/nodes/nodes_list_page.dart';
11
import 'package:cake_wallet/src/screens/seed/wallet_seed_page.dart';
@@ -32,6 +34,7 @@ import 'package:cake_wallet/store/wallet_list_store.dart';
34
import 'package:cake_wallet/theme_changer.dart';
35
import 'package:cake_wallet/view_model/contact_list/contact_list_view_model.dart';
36
import 'package:cake_wallet/view_model/contact_list/contact_view_model.dart';
37
+import 'package:cake_wallet/view_model/exchange/exchange_trade_view_model.dart';
38
import 'package:cake_wallet/view_model/node_list/node_list_view_model.dart';
39
import 'package:cake_wallet/view_model/node_list/node_create_or_edit_view_model.dart';
40
import 'package:cake_wallet/view_model/wallet_address_list/wallet_address_edit_or_create_view_model.dart';
@@ -118,8 +121,7 @@ Future setup(
121
getIt.registerSingleton<TradesStore>(TradesStore(
122
tradesSource: tradesSource,
123
settingsStore: getIt.get<SettingsStore>()));
121
- getIt.registerSingleton<TradeFilterStore>(
122
- TradeFilterStore(wallet: getIt.get<AppStore>().wallet));
124
+ getIt.registerSingleton<TradeFilterStore>(TradeFilterStore());
125
getIt.registerSingleton<TransactionFilterStore>(TransactionFilterStore());
126
getIt.registerSingleton<FiatConvertationStore>(FiatConvertationStore());
127
getIt.registerSingleton<SendTemplateStore>(
@@ -311,12 +313,26 @@ Future setup(
313
ExchangeViewModel(
314
wallet: getIt.get<AppStore>().wallet,
315
exchangeTemplateStore: getIt.get<ExchangeTemplateStore>(),
314
- trades: tradesSource
316
+ trades: tradesSource,
317
+ tradesStore: getIt.get<TradesStore>()
318
+ ));
319
+
320
+ getIt.registerFactory(() =>
321
+ ExchangeTradeViewModel(
322
+ wallet: getIt.get<AppStore>().wallet,
323
+ trades: tradesSource,
324
+ tradesStore: getIt.get<TradesStore>()
325
));
326
327
getIt.registerFactory(() =>
328
ExchangePage(getIt.get<ExchangeViewModel>()));
329
330
+ getIt.registerFactory(() =>
331
+ ExchangeConfirmPage(tradesStore: getIt.get<TradesStore>()));
332
+
333
+ getIt.registerFactory(() =>
334
+ ExchangeTradePage(exchangeTradeViewModel: getIt.get<ExchangeTradeViewModel>()));
335
+
336
getIt.registerFactory(() =>
337
ExchangeTemplatePage(getIt.get<ExchangeViewModel>()));
338
}
lib/generated/i18n.dart
+24
-24
@@ -312,8 +312,8 @@ class S implements WidgetsLocalizations {
312
String error_text_limits_loading_failed(String provider) => "Trade for ${provider} is not created. Limits loading failed";
313
String error_text_maximum_limit(String provider, String max, String currency) => "Trade for ${provider} is not created. Amount is more then maximum: ${max} ${currency}";
314
String error_text_minimal_limit(String provider, String min, String currency) => "Trade for ${provider} is not created. Amount is less then minimal: ${min} ${currency}";
315
- String exchange_result_confirm(String fetchingLabel, String from, String walletName) => "By pressing confirm, you will be sending ${fetchingLabel} ${from} from your wallet called ${walletName} to the address shown above. Or you can send from your external wallet to the above address/QR code.\n\nPlease press confirm to continue or go back to change the amounts.\n\n";
316
- String exchange_result_description(String fetchingLabel, String from) => "Please send ${fetchingLabel} ${from} to the address shown above.\n\n";
315
+ String exchange_result_confirm(String fetchingLabel, String from, String walletName) => "By pressing confirm, you will be sending ${fetchingLabel} ${from} from your wallet called ${walletName} to the address shown above. Or you can send from your external wallet to the above address/QR code.\n\nPlease press confirm to continue or go back to change the amounts.";
316
+ String exchange_result_description(String fetchingLabel, String from) => "Please send ${fetchingLabel} ${from} to the address shown above.";
317
String failed_authentication(String state_error) => "Failed authentication. ${state_error}";
318
String max_value(String value, String currency) => "Max: ${value} ${currency}";
319
String min_value(String value, String currency) => "Min: ${value} ${currency}";
@@ -948,11 +948,11 @@ class $de extends S {
948
@override
949
String Blocks_remaining(String status) => "${status} Verbleibende Blöcke";
950
@override
951
- String exchange_result_confirm(String fetchingLabel, String from, String walletName) => "Durch Drücken von Bestätigen wird gesendet ${fetchingLabel} ${from} von Ihrer Brieftasche aus angerufen ${walletName} an die oben angegebene Adresse. Oder Sie können von Ihrem externen Portemonnaie an die oben angegebene Adresse / QR-Code senden.\n\nBitte bestätigen Sie, um fortzufahren, oder gehen Sie zurück, um die Beträge zu änderns.\n\n";
951
+ String exchange_result_confirm(String fetchingLabel, String from, String walletName) => "Durch Drücken von Bestätigen wird gesendet ${fetchingLabel} ${from} von Ihrer Brieftasche aus angerufen ${walletName} an die oben angegebene Adresse. Oder Sie können von Ihrem externen Portemonnaie an die oben angegebene Adresse / QR-Code senden.\n\nBitte bestätigen Sie, um fortzufahren, oder gehen Sie zurück, um die Beträge zu änderns.";
952
@override
953
String error_text_limits_loading_failed(String provider) => "Handel für ${provider} wird nicht erstellt. Das Laden der Limits ist fehlgeschlagen";
954
@override
955
- String exchange_result_description(String fetchingLabel, String from) => "Bitte senden ${fetchingLabel} ${from} an die oben angegebene Adresse.\n\n'";
955
+ String exchange_result_description(String fetchingLabel, String from) => "Bitte senden ${fetchingLabel} ${from} an die oben angegebene Adresse.'";
956
@override
957
String commit_transaction_amount_fee(String amount, String fee) => "Transaktion festschreiben\nMenge: ${amount}\nGebühr: ${fee}";
958
@override
@@ -1580,11 +1580,11 @@ class $hi extends S {
1580
@override
1581
String Blocks_remaining(String status) => "${status} शेष रहते हैं";
1582
@override
1583
- String exchange_result_confirm(String fetchingLabel, String from, String walletName) => "पुष्टि दबाकर, आप भेज रहे होंगे ${fetchingLabel} ${from} अपने बटुए से ${walletName} ऊपर दिखाए गए पते पर। या आप अपने बाहरी वॉलेट से उपरोक्त पते / क्यूआर कोड पर भेज सकते हैं।\n\nकृपया जारी रखने या राशि बदलने के लिए वापस जाने के लिए पुष्टि करें दबाएं.\n\n";
1583
+ String exchange_result_confirm(String fetchingLabel, String from, String walletName) => "पुष्टि दबाकर, आप भेज रहे होंगे ${fetchingLabel} ${from} अपने बटुए से ${walletName} ऊपर दिखाए गए पते पर। या आप अपने बाहरी वॉलेट से उपरोक्त पते / क्यूआर कोड पर भेज सकते हैं।\n\nकृपया जारी रखने या राशि बदलने के लिए वापस जाने के लिए पुष्टि करें दबाएं.";
1584
@override
1585
String error_text_limits_loading_failed(String provider) => "व्यापार ${provider} के लिए नहीं बनाया गया है। लोडिंग की सीमाएं विफल रहीं";
1586
@override
1587
- String exchange_result_description(String fetchingLabel, String from) => "कृपया भेजें ${fetchingLabel} ${from} ऊपर दिखाए गए पते पर\n\n'";
1587
+ String exchange_result_description(String fetchingLabel, String from) => "कृपया भेजें ${fetchingLabel} ${from} ऊपर दिखाए गए पते पर";
1588
@override
1589
String commit_transaction_amount_fee(String amount, String fee) => "लेन-देन करें\nरकम: ${amount}\nशुल्क: ${fee}";
1590
@override
@@ -2212,11 +2212,11 @@ class $ru extends S {
2212
@override
2213
String Blocks_remaining(String status) => "${status} Осталось блоков";
2214
@override
2215
- String exchange_result_confirm(String fetchingLabel, String from, String walletName) => "Нажимая подтвердить, вы отправите ${fetchingLabel} ${from} с вашего кошелька ${walletName} на адрес указанный выше. Или вы можете отправить со своего внешнего кошелька на вышеуказанный адрес/QR-код.\n\nПожалуйста, нажмите подтвердить для продолжения, или вернитесь назад для изменения суммы.\n\n";
2215
+ String exchange_result_confirm(String fetchingLabel, String from, String walletName) => "Нажимая подтвердить, вы отправите ${fetchingLabel} ${from} с вашего кошелька ${walletName} на адрес указанный выше. Или вы можете отправить со своего внешнего кошелька на вышеуказанный адрес/QR-код.\n\nПожалуйста, нажмите подтвердить для продолжения, или вернитесь назад для изменения суммы.";
2216
@override
2217
String error_text_limits_loading_failed(String provider) => "Сделка для ${provider} не создана. Ошибка загрузки лимитов";
2218
@override
2219
- String exchange_result_description(String fetchingLabel, String from) => "Пожалуйста отправьте ${fetchingLabel} ${from} на адрес, указанный выше.\n\n'";
2219
+ String exchange_result_description(String fetchingLabel, String from) => "Пожалуйста отправьте ${fetchingLabel} ${from} на адрес, указанный выше.";
2220
@override
2221
String commit_transaction_amount_fee(String amount, String fee) => "Подтвердить транзакцию \nСумма: ${amount}\nКомиссия: ${fee}";
2222
@override
@@ -2844,11 +2844,11 @@ class $ko extends S {
2844
@override
2845
String Blocks_remaining(String status) => "${status} 남은 블록";
2846
@override
2847
- String exchange_result_confirm(String fetchingLabel, String from, String walletName) => "확인을 누르면 전송됩니다 ${fetchingLabel} ${from} 지갑에서 ${walletName} 위에 표시된 주소로. 또는 외부 지갑에서 위의 주소 / QR 코드로 보낼 수 있습니다.\n\n확인을 눌러 계속하거나 금액을 변경하려면 돌아가십시오.\n\n";
2847
+ String exchange_result_confirm(String fetchingLabel, String from, String walletName) => "확인을 누르면 전송됩니다 ${fetchingLabel} ${from} 지갑에서 ${walletName} 위에 표시된 주소로. 또는 외부 지갑에서 위의 주소 / QR 코드로 보낼 수 있습니다.\n\n확인을 눌러 계속하거나 금액을 변경하려면 돌아가십시오.";
2848
@override
2849
String error_text_limits_loading_failed(String provider) => "거래 ${provider} 가 생성되지 않습니다. 로딩 실패";
2850
@override
2851
- String exchange_result_description(String fetchingLabel, String from) => "보내주세요 ${fetchingLabel} ${from} 위에 표시된 주소로.\n\n'";
2851
+ String exchange_result_description(String fetchingLabel, String from) => "보내주세요 ${fetchingLabel} ${from} 위에 표시된 주소로.";
2852
@override
2853
String commit_transaction_amount_fee(String amount, String fee) => "커밋 거래\n양: ${amount}\n보수: ${fee}";
2854
@override
@@ -3476,11 +3476,11 @@ class $pt extends S {
3476
@override
3477
String Blocks_remaining(String status) => "${status} blocos restantes";
3478
@override
3479
- String exchange_result_confirm(String fetchingLabel, String from, String walletName) => "Ao confirmar, você enviará ${fetchingLabel} ${from} da sua carteira ${walletName} para o endereço exibido acima. Você também pode enviar com uma carteira externa para o endereço/código QR acima.\n\nPressione Confirmar para continuar ou volte para alterar os valores.\n\n";
3479
+ String exchange_result_confirm(String fetchingLabel, String from, String walletName) => "Ao confirmar, você enviará ${fetchingLabel} ${from} da sua carteira ${walletName} para o endereço exibido acima. Você também pode enviar com uma carteira externa para o endereço/código QR acima.\n\nPressione Confirmar para continuar ou volte para alterar os valores.";
3480
@override
3481
String error_text_limits_loading_failed(String provider) => "A troca por ${provider} não é criada. Falha no carregamento dos limites";
3482
@override
3483
- String exchange_result_description(String fetchingLabel, String from) => "Por favor, envie ${fetchingLabel} ${from} para o endereço mostrado acima.\n\n'";
3483
+ String exchange_result_description(String fetchingLabel, String from) => "Por favor, envie ${fetchingLabel} ${from} para o endereço mostrado acima.";
3484
@override
3485
String commit_transaction_amount_fee(String amount, String fee) => "Confirmar transação\nQuantia: ${amount}\nTaxa: ${fee}";
3486
@override
@@ -4108,11 +4108,11 @@ class $uk extends S {
4108
@override
4109
String Blocks_remaining(String status) => "${status} Залишилось блоків";
4110
@override
4111
- String exchange_result_confirm(String fetchingLabel, String from, String walletName) => "Натиснувши підтвердити, ви відправите ${fetchingLabel} ${from} з вашого гаманця ${walletName} на адресу вказану вище. Або ви можете відправити зі свого зовнішнього гаманця на вищевказану адресу/QR-код.\n\nБудь ласка, натисніть підтвердити для продовження або поверніться назад щоб змінити суму.\n\n";
4111
+ String exchange_result_confirm(String fetchingLabel, String from, String walletName) => "Натиснувши підтвердити, ви відправите ${fetchingLabel} ${from} з вашого гаманця ${walletName} на адресу вказану вище. Або ви можете відправити зі свого зовнішнього гаманця на вищевказану адресу/QR-код.\n\nБудь ласка, натисніть підтвердити для продовження або поверніться назад щоб змінити суму.";
4112
@override
4113
String error_text_limits_loading_failed(String provider) => "Операція для ${provider} не створена. Помилка завантаження лімітів";
4114
@override
4115
- String exchange_result_description(String fetchingLabel, String from) => "Будь ласка, відправте ${fetchingLabel} ${from} на адресу, вказану вище.\n\n'";
4115
+ String exchange_result_description(String fetchingLabel, String from) => "Будь ласка, відправте ${fetchingLabel} ${from} на адресу, вказану вище.";
4116
@override
4117
String commit_transaction_amount_fee(String amount, String fee) => "Підтвердити транзакцію \nСума: ${amount}\nКомісія: ${fee}";
4118
@override
@@ -4740,11 +4740,11 @@ class $ja extends S {
4740
@override
4741
String Blocks_remaining(String status) => "${status} 残りのブロック";
4742
@override
4743
- String exchange_result_confirm(String fetchingLabel, String from, String walletName) => "確認を押すと、送信されます ${fetchingLabel} ${from} と呼ばれるあなたの財布から ${walletName} 上記のアドレスへ. または、外部ウォレットから上記のアドレス/ QRコードに送信できます.\n\n確認を押して続行するか、戻って金額を変更してください.\n\n";
4743
+ String exchange_result_confirm(String fetchingLabel, String from, String walletName) => "確認を押すと、送信されます ${fetchingLabel} ${from} と呼ばれるあなたの財布から ${walletName} 上記のアドレスへ. または、外部ウォレットから上記のアドレス/ QRコードに送信できます.\n\n確認を押して続行するか、戻って金額を変更してください.";
4744
@override
4745
String error_text_limits_loading_failed(String provider) => "${provider} の取引は作成されません。 制限の読み込みに失敗しました";
4746
@override
4747
- String exchange_result_description(String fetchingLabel, String from) => "送信してください ${fetchingLabel} ${from} 上記のアドレスへ.\n\n'";
4747
+ String exchange_result_description(String fetchingLabel, String from) => "送信してください ${fetchingLabel} ${from} 上記のアドレスへ.";
4748
@override
4749
String commit_transaction_amount_fee(String amount, String fee) => "トランザクションをコミット\n量: ${amount}\n費用: ${fee}";
4750
@override
@@ -5376,11 +5376,11 @@ class $pl extends S {
5376
@override
5377
String Blocks_remaining(String status) => "${status} Bloki pozostałe";
5378
@override
5379
- String exchange_result_confirm(String fetchingLabel, String from, String walletName) => "Naciskając Potwierdź, wyślesz ${fetchingLabel} ${from} z twojego portfela ${walletName} z twojego portfela. Lub możesz wysłać z zewnętrznego portfela na powyższy adres / kod QR.\n\nNaciśnij Potwierdź, aby kontynuować lub wróć, aby zmienić kwoty.\n\n";
5379
+ String exchange_result_confirm(String fetchingLabel, String from, String walletName) => "Naciskając Potwierdź, wyślesz ${fetchingLabel} ${from} z twojego portfela ${walletName} z twojego portfela. Lub możesz wysłać z zewnętrznego portfela na powyższy adres / kod QR.\n\nNaciśnij Potwierdź, aby kontynuować lub wróć, aby zmienić kwoty.";
5380
@override
5381
String error_text_limits_loading_failed(String provider) => "Wymiana dla ${provider} nie została utworzona. Ładowanie limitów nie powiodło się";
5382
@override
5383
- String exchange_result_description(String fetchingLabel, String from) => "Proszę wyślij ${fetchingLabel} ${from} na adres podany powyżej.\n\n'";
5383
+ String exchange_result_description(String fetchingLabel, String from) => "Proszę wyślij ${fetchingLabel} ${from} na adres podany powyżej.";
5384
@override
5385
String commit_transaction_amount_fee(String amount, String fee) => "Zatwierdź transakcję\nIlość: ${amount}\nOpłata: ${fee}";
5386
@override
@@ -6008,11 +6008,11 @@ class $es extends S {
6008
@override
6009
String Blocks_remaining(String status) => "${status} Bloques restantes";
6010
@override
6011
- String exchange_result_confirm(String fetchingLabel, String from, String walletName) => "Al presionar confirmar, enviará ${fetchingLabel} ${from} desde su billetera llamada ${walletName} a la dirección que se muestra arriba. O puede enviar desde su billetera externa a la dirección / código QR anterior.\n\nPresione confirmar para continuar o regrese para cambiar los montos.\n\n";
6011
+ String exchange_result_confirm(String fetchingLabel, String from, String walletName) => "Al presionar confirmar, enviará ${fetchingLabel} ${from} desde su billetera llamada ${walletName} a la dirección que se muestra arriba. O puede enviar desde su billetera externa a la dirección / código QR anterior.\n\nPresione confirmar para continuar o regrese para cambiar los montos.";
6012
@override
6013
String error_text_limits_loading_failed(String provider) => "El comercio por ${provider} no se crea. Límites de carga fallidos";
6014
@override
6015
- String exchange_result_description(String fetchingLabel, String from) => "Envíe ${fetchingLabel} ${from} a la dirección que se muestra arriba.\n\n'";
6015
+ String exchange_result_description(String fetchingLabel, String from) => "Envíe ${fetchingLabel} ${from} a la dirección que se muestra arriba.";
6016
@override
6017
String commit_transaction_amount_fee(String amount, String fee) => "Confirmar transacción\nCantidad: ${amount}\nCuota: ${fee}";
6018
@override
@@ -6640,11 +6640,11 @@ class $nl extends S {
6640
@override
6641
String Blocks_remaining(String status) => "${status} Resterende blokken";
6642
@override
6643
- String exchange_result_confirm(String fetchingLabel, String from, String walletName) => "Door op bevestigen te drukken, wordt u verzonden ${fetchingLabel} ${from} uit je portemonnee genoemd ${walletName} naar bovenstaand adres. Of u kunt uw externe portemonnee naar bovenstaand adres / QR-code sturen.\n\nDruk op bevestigen om door te gaan of terug te gaan om de bedragen te wijzigen.\n\n";
6643
+ String exchange_result_confirm(String fetchingLabel, String from, String walletName) => "Door op bevestigen te drukken, wordt u verzonden ${fetchingLabel} ${from} uit je portemonnee genoemd ${walletName} naar bovenstaand adres. Of u kunt uw externe portemonnee naar bovenstaand adres / QR-code sturen.\n\nDruk op bevestigen om door te gaan of terug te gaan om de bedragen te wijzigen.";
6644
@override
6645
String error_text_limits_loading_failed(String provider) => "Ruil voor ${provider} is niet gemaakt. Beperkingen laden mislukt";
6646
@override
6647
- String exchange_result_description(String fetchingLabel, String from) => "Zend alstublieft ${fetchingLabel} ${from} naar bovenstaand adres.\n\n'";
6647
+ String exchange_result_description(String fetchingLabel, String from) => "Zend alstublieft ${fetchingLabel} ${from} naar bovenstaand adres.";
6648
@override
6649
String commit_transaction_amount_fee(String amount, String fee) => "Verricht transactie\nBedrag: ${amount}\nhonorarium: ${fee}";
6650
@override
@@ -7272,11 +7272,11 @@ class $zh extends S {
7272
@override
7273
String Blocks_remaining(String status) => "${status} 剩余的块";
7274
@override
7275
- String exchange_result_confirm(String fetchingLabel, String from, String walletName) => "点击确认 您将发送 ${fetchingLabel} ${from} 从你的钱包里 ${walletName} 到上面显示的地址. 或者,您也可以从外部钱包发送上述地址/ QR码。\n\n请按确认继续或返回以更改金额\n\n";
7275
+ String exchange_result_confirm(String fetchingLabel, String from, String walletName) => "点击确认 您将发送 ${fetchingLabel} ${from} 从你的钱包里 ${walletName} 到上面显示的地址. 或者,您也可以从外部钱包发送上述地址/ QR码。\n\n请按确认继续或返回以更改金额";
7276
@override
7277
String error_text_limits_loading_failed(String provider) => "未創建 ${provider} 交易。 限制加載失敗";
7278
@override
7279
- String exchange_result_description(String fetchingLabel, String from) => "请发送 ${fetchingLabel} ${from} 到上面显示的地址.\n\n'";
7279
+ String exchange_result_description(String fetchingLabel, String from) => "请发送 ${fetchingLabel} ${from} 到上面显示的地址.";
7280
@override
7281
String commit_transaction_amount_fee(String amount, String fee) => "提交交易\n量: ${amount}\nFee: ${fee}";
7282
@override
lib/palette.dart
+1
-1
@@ -11,7 +11,7 @@ class Palette {
11
static const Color lightBlueGrey = Color.fromRGBO(118, 131, 169, 1.0);
12
static const Color periwinkle = Color.fromRGBO(197, 208, 230, 1.0);
13
static const Color blue = Color.fromRGBO(88, 143, 252, 1.0);
14
- static const Color darkLavender = Color.fromRGBO(225, 238, 250, 1.0);
14
+ static const Color darkLavender = Color.fromRGBO(229, 238, 250, 1.0);
15
static const Color nightBlue = Color.fromRGBO(46, 57, 96, 1.0);
16
17
// NEW DESIGN
lib/router.dart
+7
-4
@@ -358,7 +358,9 @@ class Router {
358
359
case Routes.exchangeTrade:
360
return CupertinoPageRoute<void>(
361
- builder: (_) => MultiProvider(
361
+ builder: (_) => getIt.get<ExchangeTradePage>());
362
+
363
+ /*MultiProvider(
364
providers: [
365
ProxyProvider<SettingsStore, ExchangeTradeStore>(
366
update: (_, settingsStore, __) => ExchangeTradeStore(
@@ -374,12 +376,13 @@ class Router {
376
priceStore: priceStore)),
377
],
378
child: ExchangeTradePage(),
377
- ));
379
+ ));*/
380
381
case Routes.exchangeConfirm:
382
return MaterialPageRoute<void>(
381
- builder: (_) =>
382
- ExchangeConfirmPage(trade: settings.arguments as Trade));
383
+ builder: (_) => getIt.get<ExchangeConfirmPage>());
384
+
385
+ //ExchangeConfirmPage(trade: settings.arguments as Trade));
386
387
case Routes.tradeDetails:
388
return MaterialPageRoute<void>(builder: (context) {
lib/src/screens/exchange/widgets/base_exchange_widget.dart
+1
-1
@@ -486,7 +486,7 @@ class BaseExchangeWidgetState extends State<BaseExchangeWidget> {
486
}
487
if (state is TradeIsCreatedSuccessfully) {
488
Navigator.of(context)
489
- .pushNamed(Routes.exchangeConfirm, arguments: state.trade);
489
+ .pushNamed(Routes.exchangeConfirm);
490
}
491
});
492
lib/src/screens/exchange_trade/exchange_confirm_page.dart
+4
-22
@@ -1,3 +1,4 @@
1
+import 'package:cake_wallet/store/dashboard/trades_store.dart';
2
import 'package:flutter/material.dart';
3
import 'package:flutter/cupertino.dart';
4
import 'package:flutter/services.dart';
@@ -9,33 +10,14 @@ import 'package:cake_wallet/src/domain/exchange/trade.dart';
10
import 'package:cake_wallet/palette.dart';
11
12
class ExchangeConfirmPage extends BasePage {
12
- ExchangeConfirmPage({@required this.trade});
13
+ ExchangeConfirmPage({@required this.tradesStore}) : trade = tradesStore.trade;
14
15
+ final TradesStore tradesStore;
16
final Trade trade;
17
18
@override
19
String get title => S.current.copy_id;
20
19
- @override
20
- Widget trailing(BuildContext context) {
21
- final questionImage = Image.asset('assets/images/question_mark.png',
22
- color: Theme.of(context).primaryTextTheme.title.color);
23
-
24
- return SizedBox(
25
- height: 20.0,
26
- width: 20.0,
27
- child: ButtonTheme(
28
- minWidth: double.minPositive,
29
- child: FlatButton(
30
- highlightColor: Colors.transparent,
31
- splashColor: Colors.transparent,
32
- padding: EdgeInsets.all(0),
33
- onPressed: () {},
34
- child: questionImage),
35
- ),
36
- );
37
- }
38
-
21
@override
22
Widget body(BuildContext context) {
23
return Container(
@@ -131,7 +113,7 @@ class ExchangeConfirmPage extends BasePage {
113
),
114
PrimaryButton(
115
onPressed: () => Navigator.of(context)
134
- .pushReplacementNamed(Routes.exchangeTrade, arguments: trade),
116
+ .pushReplacementNamed(Routes.exchangeTrade),
117
text: S.of(context).saved_the_trade_id,
118
color: Palette.blueCraiola,
119
textColor: Colors.white)
lib/src/screens/exchange_trade/exchange_trade_item.dart
new
+13
@@ -0,0 +1,13 @@
1
+import 'package:flutter/cupertino.dart';
2
+
3
+class ExchangeTradeItem {
4
+ ExchangeTradeItem({
5
+ @required this.title,
6
+ @required this.data,
7
+ @required this.isCopied,
8
+ });
9
+
10
+ final String title;
11
+ final String data;
12
+ final bool isCopied;
13
+}
\ No newline at end of file
lib/src/screens/exchange_trade/exchange_trade_page.dart
+97
-14
@@ -1,5 +1,9 @@
1
+import 'package:cake_wallet/palette.dart';
2
import 'package:cake_wallet/src/domain/common/crypto_currency.dart';
3
import 'package:cake_wallet/src/domain/exchange/exchange_provider_description.dart';
4
+import 'package:cake_wallet/src/screens/exchange_trade/exchange_trade_item.dart';
5
+import 'package:cake_wallet/src/screens/exchange_trade/information_page.dart';
6
+import 'package:cake_wallet/view_model/exchange/exchange_trade_view_model.dart';
7
import 'package:mobx/mobx.dart';
8
import 'package:provider/provider.dart';
9
import 'package:flutter_mobx/flutter_mobx.dart';
@@ -19,15 +23,62 @@ import 'package:cake_wallet/src/widgets/scollable_with_bottom_section.dart';
23
import 'package:cake_wallet/src/widgets/alert_with_one_action.dart';
24
import 'package:cake_wallet/src/widgets/alert_with_two_actions.dart';
25
26
+void showInformation(ExchangeTradeViewModel exchangeTradeViewModel, BuildContext context) {
27
+ final fetchingLabel = S.current.fetching;
28
+ final trade = exchangeTradeViewModel.trade;
29
+ final walletName = exchangeTradeViewModel.wallet.name;
30
+
31
+ final information = exchangeTradeViewModel.isSendable
32
+ ? S.current.exchange_result_confirm(
33
+ trade.amount ?? fetchingLabel,
34
+ trade.from.toString(),
35
+ walletName)
36
+ : S.current.exchange_result_description(
37
+ trade.amount ?? fetchingLabel, trade.from.toString());
38
+
39
+ showDialog<void>(
40
+ context: context,
41
+ builder: (_) => InformationPage(information: information)
42
+ );
43
+}
44
+
45
class ExchangeTradePage extends BasePage {
46
+ ExchangeTradePage({@required this.exchangeTradeViewModel});
47
+
48
+ final ExchangeTradeViewModel exchangeTradeViewModel;
49
+
50
@override
51
String get title => S.current.exchange;
52
53
@override
27
- Widget body(BuildContext context) => ExchangeTradeForm();
54
+ Widget trailing(BuildContext context) {
55
+ final questionImage = Image.asset('assets/images/question_mark.png',
56
+ color: Theme.of(context).primaryTextTheme.title.color);
57
+
58
+ return SizedBox(
59
+ height: 20.0,
60
+ width: 20.0,
61
+ child: ButtonTheme(
62
+ minWidth: double.minPositive,
63
+ child: FlatButton(
64
+ highlightColor: Colors.transparent,
65
+ splashColor: Colors.transparent,
66
+ padding: EdgeInsets.all(0),
67
+ onPressed: () => showInformation(exchangeTradeViewModel, context),
68
+ child: questionImage),
69
+ ),
70
+ );
71
+ }
72
+
73
+ @override
74
+ Widget body(BuildContext context) => ExchangeTradeForm(exchangeTradeViewModel);
75
}
76
77
class ExchangeTradeForm extends StatefulWidget {
78
+ ExchangeTradeForm(this.exchangeTradeViewModel);
79
+
80
+ final ExchangeTradeViewModel exchangeTradeViewModel;
81
+
82
@override
83
ExchangeTradeState createState() => ExchangeTradeState();
84
}
@@ -35,23 +86,49 @@ class ExchangeTradeForm extends StatefulWidget {
86
class ExchangeTradeState extends State<ExchangeTradeForm> {
87
final fetchingLabel = S.current.fetching;
88
String get title => S.current.exchange;
89
+ List<ExchangeTradeItem> items;
90
91
bool _effectsInstalled = false;
92
93
+ @override
94
+ void initState() {
95
+ super.initState();
96
+ WidgetsBinding.instance.addPostFrameCallback(afterLayout);
97
+
98
+ items = [
99
+ ExchangeTradeItem(
100
+ title: S.current.id,
101
+ data: '${widget.exchangeTradeViewModel.trade.id ?? fetchingLabel}',
102
+ isCopied: true),
103
+ ExchangeTradeItem(
104
+ title: S.current.amount,
105
+ data: '${widget.exchangeTradeViewModel.trade.amount ?? fetchingLabel}',
106
+ isCopied: false),
107
+ ExchangeTradeItem(
108
+ title: S.current.status,
109
+ data: '${widget.exchangeTradeViewModel.trade.state ?? fetchingLabel}',
110
+ isCopied: false),
111
+ ExchangeTradeItem(
112
+ title: S.current.widgets_address,
113
+ data: widget.exchangeTradeViewModel.trade.inputAddress ?? fetchingLabel,
114
+ isCopied: true),
115
+ ];
116
+ }
117
+
118
+ void afterLayout(dynamic _) {
119
+ showInformation(widget.exchangeTradeViewModel, context);
120
+ }
121
+
122
@override
123
Widget build(BuildContext context) {
43
- final tradeStore = Provider.of<ExchangeTradeStore>(context);
44
- final sendStore = Provider.of<SendStore>(context);
45
- final walletStore = Provider.of<WalletStore>(context);
124
47
- _setEffects(context);
125
+ //_setEffects(context);
126
127
return Container(
128
child: ScrollableWithBottomSection(
129
contentPadding: EdgeInsets.only(left: 24, right: 24, top: 24),
130
content: Observer(builder: (_) {
53
- final trade = tradeStore.trade;
54
- final walletName = walletStore.name;
131
+ final trade = widget.exchangeTradeViewModel.trade;
132
133
return Column(
134
mainAxisAlignment: MainAxisAlignment.start,
@@ -268,10 +345,10 @@ class ExchangeTradeState extends State<ExchangeTradeForm> {
345
],
346
),
347
),
271
- Container(
348
+ /*Container(
349
padding: EdgeInsets.only(top: 20),
350
child: Text(
274
- tradeStore.isSendable
351
+ widget.exchangeTradeViewModel.isSendable
352
? S.of(context).exchange_result_confirm(
353
trade.amount ?? fetchingLabel,
354
trade.from.toString(),
@@ -283,7 +360,7 @@ class ExchangeTradeState extends State<ExchangeTradeForm> {
360
fontSize: 13.0,
361
color: Theme.of(context).primaryTextTheme.title.color),
362
),
286
- ),
363
+ ),*/
364
Text(
365
S.of(context).exchange_result_write_down_ID,
366
textAlign: TextAlign.left,
@@ -295,7 +372,13 @@ class ExchangeTradeState extends State<ExchangeTradeForm> {
372
);
373
}),
374
bottomSectionPadding: EdgeInsets.all(24),
298
- bottomSection: Observer(
375
+ bottomSection: PrimaryButton(
376
+ onPressed: () {},
377
+ text: S.of(context).confirm,
378
+ color: Palette.blueCraiola,
379
+ textColor: Colors.white
380
+ )
381
+ /*Observer(
382
builder: (_) => tradeStore.trade.from == CryptoCurrency.xmr &&
383
!(sendStore.state is TransactionCommitted)
384
? LoadingPrimaryButton(
@@ -312,7 +395,7 @@ class ExchangeTradeState extends State<ExchangeTradeForm> {
395
: S.of(context).send_xmr,
396
color: Colors.blue,
397
textColor: Colors.white)
315
- : Offstage()),
398
+ : Offstage()),*/
399
),
400
);
401
}
@@ -322,7 +405,7 @@ class ExchangeTradeState extends State<ExchangeTradeForm> {
405
return;
406
}
407
325
- final sendStore = Provider.of<SendStore>(context);
408
+ /*final sendStore = Provider.of<SendStore>(context);
409
410
reaction((_) => sendStore.state, (SendingState state) {
411
if (state is SendingFailed) {
@@ -376,7 +459,7 @@ class ExchangeTradeState extends State<ExchangeTradeForm> {
459
});
460
});
461
}
379
- });
462
+ });*/
463
464
_effectsInstalled = true;
465
}
lib/src/screens/exchange_trade/information_page.dart
new
+57
@@ -0,0 +1,57 @@
1
+import 'dart:ui';
2
+import 'package:cake_wallet/generated/i18n.dart';
3
+import 'package:cake_wallet/src/widgets/primary_button.dart';
4
+import 'package:flutter/cupertino.dart';
5
+import 'package:flutter/material.dart';
6
+import 'package:cake_wallet/src/widgets/alert_background.dart';
7
+
8
+class InformationPage extends StatelessWidget {
9
+ InformationPage({@required this.information});
10
+
11
+ final String information;
12
+
13
+ @override
14
+ Widget build(BuildContext context) {
15
+ return AlertBackground(
16
+ child: Center(
17
+ child: Container(
18
+ margin: EdgeInsets.only(
19
+ left: 24,
20
+ right: 24
21
+ ),
22
+ decoration: BoxDecoration(
23
+ borderRadius: BorderRadius.all(Radius.circular(30)),
24
+ color: Theme.of(context).textTheme.body2.decorationColor
25
+ ),
26
+ child: Column(
27
+ mainAxisSize: MainAxisSize.min,
28
+ children: <Widget>[
29
+ Container(
30
+ padding: EdgeInsets.fromLTRB(24, 28, 24, 24),
31
+ child: Text(
32
+ information,
33
+ style: TextStyle(
34
+ fontSize: 14,
35
+ fontWeight: FontWeight.normal,
36
+ fontFamily: 'Poppins',
37
+ decoration: TextDecoration.none,
38
+ color: Theme.of(context).accentTextTheme.caption.decorationColor
39
+ ),
40
+ ),
41
+ ),
42
+ Padding(
43
+ padding: EdgeInsets.fromLTRB(10, 0, 10, 10),
44
+ child: PrimaryButton(
45
+ onPressed: () => Navigator.of(context).pop(),
46
+ text: S.of(context).send_got_it,
47
+ color: Theme.of(context).accentTextTheme.caption.backgroundColor,
48
+ textColor: Theme.of(context).primaryTextTheme.title.color
49
+ ),
50
+ )
51
+ ],
52
+ ),
53
+ ),
54
+ )
55
+ );
56
+ }
57
+}
lib/src/screens/exchange_trade/widgets/exchange_trade_row.dart
new
+8
@@ -0,0 +1,8 @@
1
+import 'package:flutter/material.dart';
2
+
3
+class ExchangeTradeRow extends StatelessWidget {
4
+ @override
5
+ Widget build(BuildContext context) {
6
+ return Container();
7
+ }
8
+}
\ No newline at end of file
lib/store/dashboard/trade_filter_store.dart
+2
-5
@@ -11,8 +11,7 @@ abstract class TradeFilterStoreBase with Store {
11
TradeFilterStoreBase(
12
{this.displayXMRTO = true,
13
this.displayChangeNow = true,
14
- this.displayMorphToken = true,
15
- this.wallet});
14
+ this.displayMorphToken = true});
15
16
@observable
17
bool displayXMRTO;
@@ -23,8 +22,6 @@ abstract class TradeFilterStoreBase with Store {
22
@observable
23
bool displayMorphToken;
24
26
- WalletBase wallet;
27
-
25
@action
26
void toggleDisplayExchange(ExchangeProviderDescription provider) {
27
switch (provider) {
@@ -40,7 +37,7 @@ abstract class TradeFilterStoreBase with Store {
37
}
38
}
39
43
- List<TradeListItem> filtered({List<TradeListItem> trades}) {
40
+ List<TradeListItem> filtered({List<TradeListItem> trades, WalletBase wallet}) {
41
final _trades =
42
trades.where((item) => item.trade.walletId == wallet.id).toList();
43
final needToFilter = !displayChangeNow || !displayXMRTO || !displayMorphToken;
lib/store/dashboard/trades_store.dart
+6
@@ -27,6 +27,12 @@ abstract class TradesStoreBase with Store {
27
@observable
28
List<TradeListItem> trades;
29
30
+ @observable
31
+ Trade trade;
32
+
33
+ @action
34
+ void setTrade(Trade trade) => this.trade = trade;
35
+
36
@action
37
Future updateTradeList() async => trades =
38
tradesSource.values.map((trade) => TradeListItem(
lib/themes.dart
+2
-9
@@ -127,11 +127,7 @@ class Themes {
127
caption: TextStyle(
128
color: Palette.moderateLavender, // container (confirm exchange)
129
backgroundColor: Palette.moderateLavender, // button background (confirm exchange)
130
-
131
-
132
-
133
-
134
- decorationColor: Palette.lavender, // gradient end, wallet label
130
+ decorationColor: Palette.darkBlueCraiola, // text color (information page)
131
),
132
133
@@ -283,10 +279,7 @@ class Themes {
279
caption: TextStyle(
280
color: PaletteDark.nightBlue, // container (confirm exchange)
281
backgroundColor: PaletteDark.deepVioletBlue, // button background (confirm exchange)
286
-
287
-
288
-
289
- decorationColor: PaletteDark.nightBlue, // gradient end, wallet label
282
+ decorationColor: Palette.darkLavender, // text color (information page)
283
),
284
285
lib/view_model/dashboard/dashboard_view_model.dart
+1
-2
@@ -108,8 +108,7 @@ abstract class DashboardViewModelBase with Store {
108
109
_items
110
.addAll(transactionFilterStore.filtered(transactions: transactions));
111
- //_items.addAll(tradeFilterStore.filtered(trades: trades));
112
- _items.addAll(trades); // FIXME
111
+ _items.addAll(tradeFilterStore.filtered(trades: trades, wallet: wallet));
112
113
return formattedItemsList(_items);
114
}
lib/view_model/exchange/exchange_trade_view_model.dart
new
+68
@@ -0,0 +1,68 @@
1
+import 'dart:async';
2
+import 'package:cake_wallet/core/wallet_base.dart';
3
+import 'package:cake_wallet/src/domain/exchange/changenow/changenow_exchange_provider.dart';
4
+import 'package:cake_wallet/src/domain/exchange/exchange_provider.dart';
5
+import 'package:cake_wallet/src/domain/exchange/exchange_provider_description.dart';
6
+import 'package:cake_wallet/src/domain/exchange/morphtoken/morphtoken_exchange_provider.dart';
7
+import 'package:cake_wallet/src/domain/exchange/trade.dart';
8
+import 'package:cake_wallet/src/domain/exchange/xmrto/xmrto_exchange_provider.dart';
9
+import 'package:cake_wallet/store/dashboard/trades_store.dart';
10
+import 'package:hive/hive.dart';
11
+import 'package:mobx/mobx.dart';
12
+
13
+part 'exchange_trade_view_model.g.dart';
14
+
15
+class ExchangeTradeViewModel = ExchangeTradeViewModelBase with _$ExchangeTradeViewModel;
16
+
17
+abstract class ExchangeTradeViewModelBase with Store {
18
+ ExchangeTradeViewModelBase({this.wallet, this.trades, this.tradesStore}) {
19
+ trade = tradesStore.trade;
20
+
21
+ isSendable = trade.from == wallet.currency ||
22
+ trade.provider == ExchangeProviderDescription.xmrto;
23
+
24
+ switch (trade.provider) {
25
+ case ExchangeProviderDescription.xmrto:
26
+ _provider = XMRTOExchangeProvider();
27
+ break;
28
+ case ExchangeProviderDescription.changeNow:
29
+ _provider = ChangeNowExchangeProvider();
30
+ break;
31
+ case ExchangeProviderDescription.morphToken:
32
+ _provider = MorphTokenExchangeProvider(trades: trades);
33
+ break;
34
+ }
35
+
36
+ _updateTrade();
37
+ _timer = Timer.periodic(Duration(seconds: 20), (_) async => _updateTrade());
38
+ }
39
+
40
+ final WalletBase wallet;
41
+ final Box<Trade> trades;
42
+ final TradesStore tradesStore;
43
+
44
+ @observable
45
+ Trade trade;
46
+
47
+ @observable
48
+ bool isSendable;
49
+
50
+ ExchangeProvider _provider;
51
+
52
+ Timer _timer;
53
+
54
+ @action
55
+ Future<void> _updateTrade() async {
56
+ try {
57
+ final updatedTrade = await _provider.findTradeById(id: trade.id);
58
+
59
+ if (updatedTrade.createdAt == null && trade.createdAt != null) {
60
+ updatedTrade.createdAt = trade.createdAt;
61
+ }
62
+
63
+ trade = updatedTrade;
64
+ } catch (e) {
65
+ print(e.toString());
66
+ }
67
+ }
68
+}
\ No newline at end of file
lib/view_model/exchange/exchange_view_model.dart
+9
-1
@@ -4,6 +4,7 @@ import 'package:cake_wallet/src/domain/exchange/exchange_provider.dart';
4
import 'package:cake_wallet/src/domain/exchange/limits.dart';
5
import 'package:cake_wallet/src/domain/exchange/trade.dart';
6
import 'package:cake_wallet/src/stores/exchange/limits_state.dart';
7
+import 'package:cake_wallet/store/dashboard/trades_store.dart';
8
import 'package:intl/intl.dart';
9
import 'package:mobx/mobx.dart';
10
import 'package:cake_wallet/generated/i18n.dart';
@@ -24,7 +25,12 @@ part 'exchange_view_model.g.dart';
25
class ExchangeViewModel = ExchangeViewModelBase with _$ExchangeViewModel;
26
27
abstract class ExchangeViewModelBase with Store {
27
- ExchangeViewModelBase({this.wallet, this.trades, this.exchangeTemplateStore}) {
28
+ ExchangeViewModelBase({
29
+ this.wallet,
30
+ this.trades,
31
+ this.exchangeTemplateStore,
32
+ this.tradesStore}) {
33
+
34
providerList = [
35
XMRTOExchangeProvider(),
36
ChangeNowExchangeProvider(),
@@ -50,6 +56,7 @@ abstract class ExchangeViewModelBase with Store {
56
final WalletBase wallet;
57
final Box<Trade> trades;
58
final ExchangeTemplateStore exchangeTemplateStore;
59
+ final TradesStore tradesStore;
60
61
@observable
62
ExchangeProvider provider;
@@ -220,6 +227,7 @@ abstract class ExchangeViewModelBase with Store {
227
tradeState = TradeIsCreating();
228
final trade = await provider.createTrade(request: request);
229
trade.walletId = wallet.id;
230
+ tradesStore.setTrade(trade);
231
await trades.add(trade);
232
tradeState = TradeIsCreatedSuccessfully(trade: trade);
233
} catch (e) {
res/values/strings_de.arb
+2
-2
@@ -88,8 +88,8 @@
88
"offer_expires_in" : "Angebot läuft ab in: ",
89
"trade_is_powered_by" : "Dieser Handel wird betrieben von ${provider}",
90
"copy_address" : "Adresse kopieren",
91
- "exchange_result_confirm" : "Durch Drücken von Bestätigen wird gesendet ${fetchingLabel} ${from} von Ihrer Brieftasche aus angerufen ${walletName} an die oben angegebene Adresse. Oder Sie können von Ihrem externen Portemonnaie an die oben angegebene Adresse / QR-Code senden.\n\nBitte bestätigen Sie, um fortzufahren, oder gehen Sie zurück, um die Beträge zu änderns.\n\n",
92
- "exchange_result_description" : "Bitte senden ${fetchingLabel} ${from} an die oben angegebene Adresse.\n\n'",
91
+ "exchange_result_confirm" : "Durch Drücken von Bestätigen wird gesendet ${fetchingLabel} ${from} von Ihrer Brieftasche aus angerufen ${walletName} an die oben angegebene Adresse. Oder Sie können von Ihrem externen Portemonnaie an die oben angegebene Adresse / QR-Code senden.\n\nBitte bestätigen Sie, um fortzufahren, oder gehen Sie zurück, um die Beträge zu änderns.",
92
+ "exchange_result_description" : "Bitte senden ${fetchingLabel} ${from} an die oben angegebene Adresse.'",
93
"exchange_result_write_down_ID" : "*Bitte kopieren oder notieren Sie Ihren oben gezeigten Ausweis.",
94
"confirm" : "Bestätigen",
95
"confirm_sending" : "Bestätigen Sie das Senden",
res/values/strings_en.arb
+2
-2
@@ -88,8 +88,8 @@
88
"offer_expires_in" : "Offer expires in: ",
89
"trade_is_powered_by" : "This trade is powered by ${provider}",
90
"copy_address" : "Copy Address",
91
- "exchange_result_confirm" : "By pressing confirm, you will be sending ${fetchingLabel} ${from} from your wallet called ${walletName} to the address shown above. Or you can send from your external wallet to the above address/QR code.\n\nPlease press confirm to continue or go back to change the amounts.\n\n",
92
- "exchange_result_description" : "Please send ${fetchingLabel} ${from} to the address shown above.\n\n",
91
+ "exchange_result_confirm" : "By pressing confirm, you will be sending ${fetchingLabel} ${from} from your wallet called ${walletName} to the address shown above. Or you can send from your external wallet to the above address/QR code.\n\nPlease press confirm to continue or go back to change the amounts.",
92
+ "exchange_result_description" : "Please send ${fetchingLabel} ${from} to the address shown above.",
93
"exchange_result_write_down_ID" : "*Please copy or write down your ID shown above.",
94
"confirm" : "Confirm",
95
"confirm_sending" : "Confirm sending",
res/values/strings_es.arb
+2
-2
@@ -88,8 +88,8 @@
88
"offer_expires_in" : "Oferta expira en: ",
89
"trade_is_powered_by" : "Este comercio es impulsado por ${provider}",
90
"copy_address" : "Copiar dirección ",
91
- "exchange_result_confirm" : "Al presionar confirmar, enviará ${fetchingLabel} ${from} desde su billetera llamada ${walletName} a la dirección que se muestra arriba. O puede enviar desde su billetera externa a la dirección / código QR anterior.\n\nPresione confirmar para continuar o regrese para cambiar los montos.\n\n",
92
- "exchange_result_description" : "Envíe ${fetchingLabel} ${from} a la dirección que se muestra arriba.\n\n'",
91
+ "exchange_result_confirm" : "Al presionar confirmar, enviará ${fetchingLabel} ${from} desde su billetera llamada ${walletName} a la dirección que se muestra arriba. O puede enviar desde su billetera externa a la dirección / código QR anterior.\n\nPresione confirmar para continuar o regrese para cambiar los montos.",
92
+ "exchange_result_description" : "Envíe ${fetchingLabel} ${from} a la dirección que se muestra arriba.",
93
"exchange_result_write_down_ID" : "*Copie o escriba su identificación que se muestra arriba.",
94
"confirm" : "Confirmar",
95
"confirm_sending" : "Confirmar envío",
res/values/strings_hi.arb
+2
-2
@@ -88,8 +88,8 @@
88
"offer_expires_in" : "में ऑफर समाप्त हो रहा है: ",
89
"trade_is_powered_by" : "यह व्यापार द्वारा संचालित है ${provider}",
90
"copy_address" : "पता कॉपी करें",
91
- "exchange_result_confirm" : "पुष्टि दबाकर, आप भेज रहे होंगे ${fetchingLabel} ${from} अपने बटुए से ${walletName} ऊपर दिखाए गए पते पर। या आप अपने बाहरी वॉलेट से उपरोक्त पते / क्यूआर कोड पर भेज सकते हैं।\n\nकृपया जारी रखने या राशि बदलने के लिए वापस जाने के लिए पुष्टि करें दबाएं.\n\n",
92
- "exchange_result_description" : "कृपया भेजें ${fetchingLabel} ${from} ऊपर दिखाए गए पते पर\n\n'",
91
+ "exchange_result_confirm" : "पुष्टि दबाकर, आप भेज रहे होंगे ${fetchingLabel} ${from} अपने बटुए से ${walletName} ऊपर दिखाए गए पते पर। या आप अपने बाहरी वॉलेट से उपरोक्त पते / क्यूआर कोड पर भेज सकते हैं।\n\nकृपया जारी रखने या राशि बदलने के लिए वापस जाने के लिए पुष्टि करें दबाएं.",
92
+ "exchange_result_description" : "कृपया भेजें ${fetchingLabel} ${from} ऊपर दिखाए गए पते पर",
93
"exchange_result_write_down_ID" : "*कृपया ऊपर दिखाए गए अपने ID को कॉपी या लिख लें.",
94
"confirm" : "की पुष्टि करें",
95
"confirm_sending" : "भेजने की पुष्टि करें",
res/values/strings_ja.arb
+2
-2
@@ -88,8 +88,8 @@
88
"offer_expires_in" : "で有効期限が切れます: ",
89
"trade_is_powered_by" : "この取引は ${provider}",
90
"copy_address" : "住所をコピー",
91
- "exchange_result_confirm" : "確認を押すと、送信されます ${fetchingLabel} ${from} と呼ばれるあなたの財布から ${walletName} 上記のアドレスへ. または、外部ウォレットから上記のアドレス/ QRコードに送信できます.\n\n確認を押して続行するか、戻って金額を変更してください.\n\n",
92
- "exchange_result_description" : "送信してください ${fetchingLabel} ${from} 上記のアドレスへ.\n\n'",
91
+ "exchange_result_confirm" : "確認を押すと、送信されます ${fetchingLabel} ${from} と呼ばれるあなたの財布から ${walletName} 上記のアドレスへ. または、外部ウォレットから上記のアドレス/ QRコードに送信できます.\n\n確認を押して続行するか、戻って金額を変更してください.",
92
+ "exchange_result_description" : "送信してください ${fetchingLabel} ${from} 上記のアドレスへ.",
93
"exchange_result_write_down_ID" : "*上記のIDをコピーまたは書き留めてください.",
94
"confirm" : "確認する",
95
"confirm_sending" : "送信を確認",
res/values/strings_ko.arb
+2
-2
@@ -88,8 +88,8 @@
88
"offer_expires_in" : "쿠폰 만료일: ",
89
"trade_is_powered_by" : "이 거래는 ${provider}",
90
"copy_address" : "주소 복사",
91
- "exchange_result_confirm" : "확인을 누르면 전송됩니다 ${fetchingLabel} ${from} 지갑에서 ${walletName} 위에 표시된 주소로. 또는 외부 지갑에서 위의 주소 / QR 코드로 보낼 수 있습니다.\n\n확인을 눌러 계속하거나 금액을 변경하려면 돌아가십시오.\n\n",
92
- "exchange_result_description" : "보내주세요 ${fetchingLabel} ${from} 위에 표시된 주소로.\n\n'",
91
+ "exchange_result_confirm" : "확인을 누르면 전송됩니다 ${fetchingLabel} ${from} 지갑에서 ${walletName} 위에 표시된 주소로. 또는 외부 지갑에서 위의 주소 / QR 코드로 보낼 수 있습니다.\n\n확인을 눌러 계속하거나 금액을 변경하려면 돌아가십시오.",
92
+ "exchange_result_description" : "보내주세요 ${fetchingLabel} ${from} 위에 표시된 주소로.",
93
"exchange_result_write_down_ID" : "*위에 표시된 ID를 복사하거나 적어 두십시오.",
94
"confirm" : "확인",
95
"confirm_sending" : "전송 확인",
res/values/strings_nl.arb
+2
-2
@@ -88,8 +88,8 @@
88
"offer_expires_in" : "Aanbieding verloopt over: ",
89
"trade_is_powered_by" : "Deze transactie wordt mogelijk gemaakt door ${provider}",
90
"copy_address" : "Adres kopiëren",
91
- "exchange_result_confirm" : "Door op bevestigen te drukken, wordt u verzonden ${fetchingLabel} ${from} uit je portemonnee genoemd ${walletName} naar bovenstaand adres. Of u kunt uw externe portemonnee naar bovenstaand adres / QR-code sturen.\n\nDruk op bevestigen om door te gaan of terug te gaan om de bedragen te wijzigen.\n\n",
92
- "exchange_result_description" : "Zend alstublieft ${fetchingLabel} ${from} naar bovenstaand adres.\n\n'",
91
+ "exchange_result_confirm" : "Door op bevestigen te drukken, wordt u verzonden ${fetchingLabel} ${from} uit je portemonnee genoemd ${walletName} naar bovenstaand adres. Of u kunt uw externe portemonnee naar bovenstaand adres / QR-code sturen.\n\nDruk op bevestigen om door te gaan of terug te gaan om de bedragen te wijzigen.",
92
+ "exchange_result_description" : "Zend alstublieft ${fetchingLabel} ${from} naar bovenstaand adres.",
93
"exchange_result_write_down_ID" : "*Kopieer of noteer uw hierboven getoonde ID.",
94
"confirm" : "Bevestigen",
95
"confirm_sending" : "Bevestig verzending",
res/values/strings_pl.arb
+2
-2
@@ -88,8 +88,8 @@
88
"offer_expires_in" : "Oferta wygasa za ",
89
"trade_is_powered_by" : "Ten handel jest zasilany przez ${provider}",
90
"copy_address" : "Skopiuj adress",
91
- "exchange_result_confirm" : "Naciskając Potwierdź, wyślesz ${fetchingLabel} ${from} z twojego portfela ${walletName} z twojego portfela. Lub możesz wysłać z zewnętrznego portfela na powyższy adres / kod QR.\n\nNaciśnij Potwierdź, aby kontynuować lub wróć, aby zmienić kwoty.\n\n",
92
- "exchange_result_description" : "Proszę wyślij ${fetchingLabel} ${from} na adres podany powyżej.\n\n'",
91
+ "exchange_result_confirm" : "Naciskając Potwierdź, wyślesz ${fetchingLabel} ${from} z twojego portfela ${walletName} z twojego portfela. Lub możesz wysłać z zewnętrznego portfela na powyższy adres / kod QR.\n\nNaciśnij Potwierdź, aby kontynuować lub wróć, aby zmienić kwoty.",
92
+ "exchange_result_description" : "Proszę wyślij ${fetchingLabel} ${from} na adres podany powyżej.",
93
"exchange_result_write_down_ID" : "*Skopiuj lub zanotuj swój identyfikator pokazany powyżej.",
94
"confirm" : "Potwierdzać",
95
"confirm_sending" : "Potwierdź wysłanie",
res/values/strings_pt.arb
+2
-2
@@ -88,8 +88,8 @@
88
"offer_expires_in" : "A oferta expira em: ",
89
"trade_is_powered_by" : "Troca realizada por ${provider}",
90
"copy_address" : "Copiar endereço",
91
- "exchange_result_confirm" : "Ao confirmar, você enviará ${fetchingLabel} ${from} da sua carteira ${walletName} para o endereço exibido acima. Você também pode enviar com uma carteira externa para o endereço/código QR acima.\n\nPressione Confirmar para continuar ou volte para alterar os valores.\n\n",
92
- "exchange_result_description" : "Por favor, envie ${fetchingLabel} ${from} para o endereço mostrado acima.\n\n'",
91
+ "exchange_result_confirm" : "Ao confirmar, você enviará ${fetchingLabel} ${from} da sua carteira ${walletName} para o endereço exibido acima. Você também pode enviar com uma carteira externa para o endereço/código QR acima.\n\nPressione Confirmar para continuar ou volte para alterar os valores.",
92
+ "exchange_result_description" : "Por favor, envie ${fetchingLabel} ${from} para o endereço mostrado acima.",
93
"exchange_result_write_down_ID" : "*Copie ou anote seu ID mostrado acima.",
94
"confirm" : "Confirmar",
95
"confirm_sending" : "Confirmar o envio",
res/values/strings_ru.arb
+2
-2
@@ -88,8 +88,8 @@
88
"offer_expires_in" : "Предложение истекает через: ",
89
"trade_is_powered_by" : "Сделка выполнена через ${provider}",
90
"copy_address" : "Cкопировать адрес",
91
- "exchange_result_confirm" : "Нажимая подтвердить, вы отправите ${fetchingLabel} ${from} с вашего кошелька ${walletName} на адрес указанный выше. Или вы можете отправить со своего внешнего кошелька на вышеуказанный адрес/QR-код.\n\nПожалуйста, нажмите подтвердить для продолжения, или вернитесь назад для изменения суммы.\n\n",
92
- "exchange_result_description" : "Пожалуйста отправьте ${fetchingLabel} ${from} на адрес, указанный выше.\n\n'",
91
+ "exchange_result_confirm" : "Нажимая подтвердить, вы отправите ${fetchingLabel} ${from} с вашего кошелька ${walletName} на адрес указанный выше. Или вы можете отправить со своего внешнего кошелька на вышеуказанный адрес/QR-код.\n\nПожалуйста, нажмите подтвердить для продолжения, или вернитесь назад для изменения суммы.",
92
+ "exchange_result_description" : "Пожалуйста отправьте ${fetchingLabel} ${from} на адрес, указанный выше.",
93
"exchange_result_write_down_ID" : "*Пожалуйста, скопируйте или запишите ID, указанный выше.",
94
"confirm" : "Подтвердить",
95
"confirm_sending" : "Подтвердить отправку",
res/values/strings_uk.arb
+2
-2
@@ -88,8 +88,8 @@
88
"offer_expires_in" : "Пропозиція закінчиться через: ",
89
"trade_is_powered_by" : "Операція виконана через ${provider}",
90
"copy_address" : "Cкопіювати адресу",
91
- "exchange_result_confirm" : "Натиснувши підтвердити, ви відправите ${fetchingLabel} ${from} з вашого гаманця ${walletName} на адресу вказану вище. Або ви можете відправити зі свого зовнішнього гаманця на вищевказану адресу/QR-код.\n\nБудь ласка, натисніть підтвердити для продовження або поверніться назад щоб змінити суму.\n\n",
92
- "exchange_result_description" : "Будь ласка, відправте ${fetchingLabel} ${from} на адресу, вказану вище.\n\n'",
91
+ "exchange_result_confirm" : "Натиснувши підтвердити, ви відправите ${fetchingLabel} ${from} з вашого гаманця ${walletName} на адресу вказану вище. Або ви можете відправити зі свого зовнішнього гаманця на вищевказану адресу/QR-код.\n\nБудь ласка, натисніть підтвердити для продовження або поверніться назад щоб змінити суму.",
92
+ "exchange_result_description" : "Будь ласка, відправте ${fetchingLabel} ${from} на адресу, вказану вище.",
93
"exchange_result_write_down_ID" : "*Будь ласка, скопіюйте або запишіть ID, вказаний вище.",
94
"confirm" : "Підтвердити",
95
"confirm_sending" : "Підтвердити відправлення",
res/values/strings_zh.arb
+2
-2
@@ -88,8 +88,8 @@
88
"offer_expires_in" : "优惠有效期至 ",
89
"trade_is_powered_by" : "该交易由 ${provider}",
90
"copy_address" : "复制地址",
91
- "exchange_result_confirm" : "点击确认 您将发送 ${fetchingLabel} ${from} 从你的钱包里 ${walletName} 到上面显示的地址. 或者,您也可以从外部钱包发送上述地址/ QR码。\n\n请按确认继续或返回以更改金额\n\n",
92
- "exchange_result_description" : "请发送 ${fetchingLabel} ${from} 到上面显示的地址.\n\n'",
91
+ "exchange_result_confirm" : "点击确认 您将发送 ${fetchingLabel} ${from} 从你的钱包里 ${walletName} 到上面显示的地址. 或者,您也可以从外部钱包发送上述地址/ QR码。\n\n请按确认继续或返回以更改金额",
92
+ "exchange_result_description" : "请发送 ${fetchingLabel} ${from} 到上面显示的地址.",
93
"exchange_result_write_down_ID" : "*请复制或写下您上面显示的ID.",
94
"confirm" : "确认",
95
"confirm_sending" : "确认发送",