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" : "确认发送",