From 76cde0530de6a02585408e514d0c6e45cee84b06 Mon Sep 17 00:00:00 2001 From: Oleksandr Sobol Date: Wed, 26 Aug 2020 20:31:23 +0300 Subject: [PATCH] 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 --- lib/di.dart | 22 +++- lib/generated/i18n.dart | 48 ++++---- lib/palette.dart | 2 +- lib/router.dart | 11 +- .../widgets/base_exchange_widget.dart | 2 +- .../exchange_trade/exchange_confirm_page.dart | 26 +--- .../exchange_trade/exchange_trade_item.dart | 13 ++ .../exchange_trade/exchange_trade_page.dart | 113 +++++++++++++++--- .../exchange_trade/information_page.dart | 57 +++++++++ .../widgets/exchange_trade_row.dart | 8 ++ lib/store/dashboard/trade_filter_store.dart | 7 +- lib/store/dashboard/trades_store.dart | 6 + lib/themes.dart | 11 +- .../dashboard/dashboard_view_model.dart | 3 +- .../exchange/exchange_trade_view_model.dart | 68 +++++++++++ .../exchange/exchange_view_model.dart | 10 +- res/values/strings_de.arb | 4 +- res/values/strings_en.arb | 4 +- res/values/strings_es.arb | 4 +- res/values/strings_hi.arb | 4 +- res/values/strings_ja.arb | 4 +- res/values/strings_ko.arb | 4 +- res/values/strings_nl.arb | 4 +- res/values/strings_pl.arb | 4 +- res/values/strings_pt.arb | 4 +- res/values/strings_ru.arb | 4 +- res/values/strings_uk.arb | 4 +- res/values/strings_zh.arb | 4 +- 28 files changed, 344 insertions(+), 111 deletions(-) create mode 100644 lib/src/screens/exchange_trade/exchange_trade_item.dart create mode 100644 lib/src/screens/exchange_trade/information_page.dart create mode 100644 lib/src/screens/exchange_trade/widgets/exchange_trade_row.dart create mode 100644 lib/view_model/exchange/exchange_trade_view_model.dart diff --git a/lib/di.dart b/lib/di.dart index 1d903d7f7..83846c80b 100644 --- a/lib/di.dart +++ b/lib/di.dart @@ -4,6 +4,8 @@ import 'package:cake_wallet/src/domain/common/node.dart'; import 'package:cake_wallet/src/domain/exchange/trade.dart'; import 'package:cake_wallet/src/screens/contact/contact_list_page.dart'; import 'package:cake_wallet/src/screens/contact/contact_page.dart'; +import 'package:cake_wallet/src/screens/exchange_trade/exchange_confirm_page.dart'; +import 'package:cake_wallet/src/screens/exchange_trade/exchange_trade_page.dart'; import 'package:cake_wallet/src/screens/nodes/node_create_or_edit_page.dart'; import 'package:cake_wallet/src/screens/nodes/nodes_list_page.dart'; import 'package:cake_wallet/src/screens/seed/wallet_seed_page.dart'; @@ -32,6 +34,7 @@ import 'package:cake_wallet/store/wallet_list_store.dart'; import 'package:cake_wallet/theme_changer.dart'; import 'package:cake_wallet/view_model/contact_list/contact_list_view_model.dart'; import 'package:cake_wallet/view_model/contact_list/contact_view_model.dart'; +import 'package:cake_wallet/view_model/exchange/exchange_trade_view_model.dart'; import 'package:cake_wallet/view_model/node_list/node_list_view_model.dart'; import 'package:cake_wallet/view_model/node_list/node_create_or_edit_view_model.dart'; import 'package:cake_wallet/view_model/wallet_address_list/wallet_address_edit_or_create_view_model.dart'; @@ -118,8 +121,7 @@ Future setup( getIt.registerSingleton(TradesStore( tradesSource: tradesSource, settingsStore: getIt.get())); - getIt.registerSingleton( - TradeFilterStore(wallet: getIt.get().wallet)); + getIt.registerSingleton(TradeFilterStore()); getIt.registerSingleton(TransactionFilterStore()); getIt.registerSingleton(FiatConvertationStore()); getIt.registerSingleton( @@ -311,12 +313,26 @@ Future setup( ExchangeViewModel( wallet: getIt.get().wallet, exchangeTemplateStore: getIt.get(), - trades: tradesSource + trades: tradesSource, + tradesStore: getIt.get() + )); + + getIt.registerFactory(() => + ExchangeTradeViewModel( + wallet: getIt.get().wallet, + trades: tradesSource, + tradesStore: getIt.get() )); getIt.registerFactory(() => ExchangePage(getIt.get())); + getIt.registerFactory(() => + ExchangeConfirmPage(tradesStore: getIt.get())); + + getIt.registerFactory(() => + ExchangeTradePage(exchangeTradeViewModel: getIt.get())); + getIt.registerFactory(() => ExchangeTemplatePage(getIt.get())); } diff --git a/lib/generated/i18n.dart b/lib/generated/i18n.dart index 4c9a59474..79dfa351a 100644 --- a/lib/generated/i18n.dart +++ b/lib/generated/i18n.dart @@ -312,8 +312,8 @@ class S implements WidgetsLocalizations { String error_text_limits_loading_failed(String provider) => "Trade for ${provider} is not created. Limits loading failed"; String error_text_maximum_limit(String provider, String max, String currency) => "Trade for ${provider} is not created. Amount is more then maximum: ${max} ${currency}"; String error_text_minimal_limit(String provider, String min, String currency) => "Trade for ${provider} is not created. Amount is less then minimal: ${min} ${currency}"; - 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"; - String exchange_result_description(String fetchingLabel, String from) => "Please send ${fetchingLabel} ${from} to the address shown above.\n\n"; + 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."; + String exchange_result_description(String fetchingLabel, String from) => "Please send ${fetchingLabel} ${from} to the address shown above."; String failed_authentication(String state_error) => "Failed authentication. ${state_error}"; String max_value(String value, String currency) => "Max: ${value} ${currency}"; String min_value(String value, String currency) => "Min: ${value} ${currency}"; @@ -948,11 +948,11 @@ class $de extends S { @override String Blocks_remaining(String status) => "${status} Verbleibende Blöcke"; @override - 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"; + 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."; @override String error_text_limits_loading_failed(String provider) => "Handel für ${provider} wird nicht erstellt. Das Laden der Limits ist fehlgeschlagen"; @override - String exchange_result_description(String fetchingLabel, String from) => "Bitte senden ${fetchingLabel} ${from} an die oben angegebene Adresse.\n\n'"; + String exchange_result_description(String fetchingLabel, String from) => "Bitte senden ${fetchingLabel} ${from} an die oben angegebene Adresse.'"; @override String commit_transaction_amount_fee(String amount, String fee) => "Transaktion festschreiben\nMenge: ${amount}\nGebühr: ${fee}"; @override @@ -1580,11 +1580,11 @@ class $hi extends S { @override String Blocks_remaining(String status) => "${status} शेष रहते हैं"; @override - String exchange_result_confirm(String fetchingLabel, String from, String walletName) => "पुष्टि दबाकर, आप भेज रहे होंगे ${fetchingLabel} ${from} अपने बटुए से ${walletName} ऊपर दिखाए गए पते पर। या आप अपने बाहरी वॉलेट से उपरोक्त पते / क्यूआर कोड पर भेज सकते हैं।\n\nकृपया जारी रखने या राशि बदलने के लिए वापस जाने के लिए पुष्टि करें दबाएं.\n\n"; + String exchange_result_confirm(String fetchingLabel, String from, String walletName) => "पुष्टि दबाकर, आप भेज रहे होंगे ${fetchingLabel} ${from} अपने बटुए से ${walletName} ऊपर दिखाए गए पते पर। या आप अपने बाहरी वॉलेट से उपरोक्त पते / क्यूआर कोड पर भेज सकते हैं।\n\nकृपया जारी रखने या राशि बदलने के लिए वापस जाने के लिए पुष्टि करें दबाएं."; @override String error_text_limits_loading_failed(String provider) => "व्यापार ${provider} के लिए नहीं बनाया गया है। लोडिंग की सीमाएं विफल रहीं"; @override - String exchange_result_description(String fetchingLabel, String from) => "कृपया भेजें ${fetchingLabel} ${from} ऊपर दिखाए गए पते पर\n\n'"; + String exchange_result_description(String fetchingLabel, String from) => "कृपया भेजें ${fetchingLabel} ${from} ऊपर दिखाए गए पते पर"; @override String commit_transaction_amount_fee(String amount, String fee) => "लेन-देन करें\nरकम: ${amount}\nशुल्क: ${fee}"; @override @@ -2212,11 +2212,11 @@ class $ru extends S { @override String Blocks_remaining(String status) => "${status} Осталось блоков"; @override - String exchange_result_confirm(String fetchingLabel, String from, String walletName) => "Нажимая подтвердить, вы отправите ${fetchingLabel} ${from} с вашего кошелька ${walletName} на адрес указанный выше. Или вы можете отправить со своего внешнего кошелька на вышеуказанный адрес/QR-код.\n\nПожалуйста, нажмите подтвердить для продолжения, или вернитесь назад для изменения суммы.\n\n"; + String exchange_result_confirm(String fetchingLabel, String from, String walletName) => "Нажимая подтвердить, вы отправите ${fetchingLabel} ${from} с вашего кошелька ${walletName} на адрес указанный выше. Или вы можете отправить со своего внешнего кошелька на вышеуказанный адрес/QR-код.\n\nПожалуйста, нажмите подтвердить для продолжения, или вернитесь назад для изменения суммы."; @override String error_text_limits_loading_failed(String provider) => "Сделка для ${provider} не создана. Ошибка загрузки лимитов"; @override - String exchange_result_description(String fetchingLabel, String from) => "Пожалуйста отправьте ${fetchingLabel} ${from} на адрес, указанный выше.\n\n'"; + String exchange_result_description(String fetchingLabel, String from) => "Пожалуйста отправьте ${fetchingLabel} ${from} на адрес, указанный выше."; @override String commit_transaction_amount_fee(String amount, String fee) => "Подтвердить транзакцию \nСумма: ${amount}\nКомиссия: ${fee}"; @override @@ -2844,11 +2844,11 @@ class $ko extends S { @override String Blocks_remaining(String status) => "${status} 남은 블록"; @override - String exchange_result_confirm(String fetchingLabel, String from, String walletName) => "확인을 누르면 전송됩니다 ${fetchingLabel} ${from} 지갑에서 ${walletName} 위에 표시된 주소로. 또는 외부 지갑에서 위의 주소 / QR 코드로 보낼 수 있습니다.\n\n확인을 눌러 계속하거나 금액을 변경하려면 돌아가십시오.\n\n"; + String exchange_result_confirm(String fetchingLabel, String from, String walletName) => "확인을 누르면 전송됩니다 ${fetchingLabel} ${from} 지갑에서 ${walletName} 위에 표시된 주소로. 또는 외부 지갑에서 위의 주소 / QR 코드로 보낼 수 있습니다.\n\n확인을 눌러 계속하거나 금액을 변경하려면 돌아가십시오."; @override String error_text_limits_loading_failed(String provider) => "거래 ${provider} 가 생성되지 않습니다. 로딩 실패"; @override - String exchange_result_description(String fetchingLabel, String from) => "보내주세요 ${fetchingLabel} ${from} 위에 표시된 주소로.\n\n'"; + String exchange_result_description(String fetchingLabel, String from) => "보내주세요 ${fetchingLabel} ${from} 위에 표시된 주소로."; @override String commit_transaction_amount_fee(String amount, String fee) => "커밋 거래\n양: ${amount}\n보수: ${fee}"; @override @@ -3476,11 +3476,11 @@ class $pt extends S { @override String Blocks_remaining(String status) => "${status} blocos restantes"; @override - 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"; + 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."; @override String error_text_limits_loading_failed(String provider) => "A troca por ${provider} não é criada. Falha no carregamento dos limites"; @override - String exchange_result_description(String fetchingLabel, String from) => "Por favor, envie ${fetchingLabel} ${from} para o endereço mostrado acima.\n\n'"; + String exchange_result_description(String fetchingLabel, String from) => "Por favor, envie ${fetchingLabel} ${from} para o endereço mostrado acima."; @override String commit_transaction_amount_fee(String amount, String fee) => "Confirmar transação\nQuantia: ${amount}\nTaxa: ${fee}"; @override @@ -4108,11 +4108,11 @@ class $uk extends S { @override String Blocks_remaining(String status) => "${status} Залишилось блоків"; @override - String exchange_result_confirm(String fetchingLabel, String from, String walletName) => "Натиснувши підтвердити, ви відправите ${fetchingLabel} ${from} з вашого гаманця ${walletName} на адресу вказану вище. Або ви можете відправити зі свого зовнішнього гаманця на вищевказану адресу/QR-код.\n\nБудь ласка, натисніть підтвердити для продовження або поверніться назад щоб змінити суму.\n\n"; + String exchange_result_confirm(String fetchingLabel, String from, String walletName) => "Натиснувши підтвердити, ви відправите ${fetchingLabel} ${from} з вашого гаманця ${walletName} на адресу вказану вище. Або ви можете відправити зі свого зовнішнього гаманця на вищевказану адресу/QR-код.\n\nБудь ласка, натисніть підтвердити для продовження або поверніться назад щоб змінити суму."; @override String error_text_limits_loading_failed(String provider) => "Операція для ${provider} не створена. Помилка завантаження лімітів"; @override - String exchange_result_description(String fetchingLabel, String from) => "Будь ласка, відправте ${fetchingLabel} ${from} на адресу, вказану вище.\n\n'"; + String exchange_result_description(String fetchingLabel, String from) => "Будь ласка, відправте ${fetchingLabel} ${from} на адресу, вказану вище."; @override String commit_transaction_amount_fee(String amount, String fee) => "Підтвердити транзакцію \nСума: ${amount}\nКомісія: ${fee}"; @override @@ -4740,11 +4740,11 @@ class $ja extends S { @override String Blocks_remaining(String status) => "${status} 残りのブロック"; @override - String exchange_result_confirm(String fetchingLabel, String from, String walletName) => "確認を押すと、送信されます ${fetchingLabel} ${from} と呼ばれるあなたの財布から ${walletName} 上記のアドレスへ. または、外部ウォレットから上記のアドレス/ QRコードに送信できます.\n\n確認を押して続行するか、戻って金額を変更してください.\n\n"; + String exchange_result_confirm(String fetchingLabel, String from, String walletName) => "確認を押すと、送信されます ${fetchingLabel} ${from} と呼ばれるあなたの財布から ${walletName} 上記のアドレスへ. または、外部ウォレットから上記のアドレス/ QRコードに送信できます.\n\n確認を押して続行するか、戻って金額を変更してください."; @override String error_text_limits_loading_failed(String provider) => "${provider} の取引は作成されません。 制限の読み込みに失敗しました"; @override - String exchange_result_description(String fetchingLabel, String from) => "送信してください ${fetchingLabel} ${from} 上記のアドレスへ.\n\n'"; + String exchange_result_description(String fetchingLabel, String from) => "送信してください ${fetchingLabel} ${from} 上記のアドレスへ."; @override String commit_transaction_amount_fee(String amount, String fee) => "トランザクションをコミット\n量: ${amount}\n費用: ${fee}"; @override @@ -5376,11 +5376,11 @@ class $pl extends S { @override String Blocks_remaining(String status) => "${status} Bloki pozostałe"; @override - 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"; + 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."; @override String error_text_limits_loading_failed(String provider) => "Wymiana dla ${provider} nie została utworzona. Ładowanie limitów nie powiodło się"; @override - String exchange_result_description(String fetchingLabel, String from) => "Proszę wyślij ${fetchingLabel} ${from} na adres podany powyżej.\n\n'"; + String exchange_result_description(String fetchingLabel, String from) => "Proszę wyślij ${fetchingLabel} ${from} na adres podany powyżej."; @override String commit_transaction_amount_fee(String amount, String fee) => "Zatwierdź transakcję\nIlość: ${amount}\nOpłata: ${fee}"; @override @@ -6008,11 +6008,11 @@ class $es extends S { @override String Blocks_remaining(String status) => "${status} Bloques restantes"; @override - 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"; + 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."; @override String error_text_limits_loading_failed(String provider) => "El comercio por ${provider} no se crea. Límites de carga fallidos"; @override - String exchange_result_description(String fetchingLabel, String from) => "Envíe ${fetchingLabel} ${from} a la dirección que se muestra arriba.\n\n'"; + String exchange_result_description(String fetchingLabel, String from) => "Envíe ${fetchingLabel} ${from} a la dirección que se muestra arriba."; @override String commit_transaction_amount_fee(String amount, String fee) => "Confirmar transacción\nCantidad: ${amount}\nCuota: ${fee}"; @override @@ -6640,11 +6640,11 @@ class $nl extends S { @override String Blocks_remaining(String status) => "${status} Resterende blokken"; @override - 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"; + 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."; @override String error_text_limits_loading_failed(String provider) => "Ruil voor ${provider} is niet gemaakt. Beperkingen laden mislukt"; @override - String exchange_result_description(String fetchingLabel, String from) => "Zend alstublieft ${fetchingLabel} ${from} naar bovenstaand adres.\n\n'"; + String exchange_result_description(String fetchingLabel, String from) => "Zend alstublieft ${fetchingLabel} ${from} naar bovenstaand adres."; @override String commit_transaction_amount_fee(String amount, String fee) => "Verricht transactie\nBedrag: ${amount}\nhonorarium: ${fee}"; @override @@ -7272,11 +7272,11 @@ class $zh extends S { @override String Blocks_remaining(String status) => "${status} 剩余的块"; @override - String exchange_result_confirm(String fetchingLabel, String from, String walletName) => "点击确认 您将发送 ${fetchingLabel} ${from} 从你的钱包里 ${walletName} 到上面显示的地址. 或者,您也可以从外部钱包发送上述地址/ QR码。\n\n请按确认继续或返回以更改金额\n\n"; + String exchange_result_confirm(String fetchingLabel, String from, String walletName) => "点击确认 您将发送 ${fetchingLabel} ${from} 从你的钱包里 ${walletName} 到上面显示的地址. 或者,您也可以从外部钱包发送上述地址/ QR码。\n\n请按确认继续或返回以更改金额"; @override String error_text_limits_loading_failed(String provider) => "未創建 ${provider} 交易。 限制加載失敗"; @override - String exchange_result_description(String fetchingLabel, String from) => "请发送 ${fetchingLabel} ${from} 到上面显示的地址.\n\n'"; + String exchange_result_description(String fetchingLabel, String from) => "请发送 ${fetchingLabel} ${from} 到上面显示的地址."; @override String commit_transaction_amount_fee(String amount, String fee) => "提交交易\n量: ${amount}\nFee: ${fee}"; @override diff --git a/lib/palette.dart b/lib/palette.dart index d2c761bff..d73ad9ba1 100644 --- a/lib/palette.dart +++ b/lib/palette.dart @@ -11,7 +11,7 @@ class Palette { static const Color lightBlueGrey = Color.fromRGBO(118, 131, 169, 1.0); static const Color periwinkle = Color.fromRGBO(197, 208, 230, 1.0); static const Color blue = Color.fromRGBO(88, 143, 252, 1.0); - static const Color darkLavender = Color.fromRGBO(225, 238, 250, 1.0); + static const Color darkLavender = Color.fromRGBO(229, 238, 250, 1.0); static const Color nightBlue = Color.fromRGBO(46, 57, 96, 1.0); // NEW DESIGN diff --git a/lib/router.dart b/lib/router.dart index 6c03dc1dd..68e010293 100644 --- a/lib/router.dart +++ b/lib/router.dart @@ -358,7 +358,9 @@ class Router { case Routes.exchangeTrade: return CupertinoPageRoute( - builder: (_) => MultiProvider( + builder: (_) => getIt.get()); + + /*MultiProvider( providers: [ ProxyProvider( update: (_, settingsStore, __) => ExchangeTradeStore( @@ -374,12 +376,13 @@ class Router { priceStore: priceStore)), ], child: ExchangeTradePage(), - )); + ));*/ case Routes.exchangeConfirm: return MaterialPageRoute( - builder: (_) => - ExchangeConfirmPage(trade: settings.arguments as Trade)); + builder: (_) => getIt.get()); + + //ExchangeConfirmPage(trade: settings.arguments as Trade)); case Routes.tradeDetails: return MaterialPageRoute(builder: (context) { diff --git a/lib/src/screens/exchange/widgets/base_exchange_widget.dart b/lib/src/screens/exchange/widgets/base_exchange_widget.dart index 34a5ce94f..f3aa14e0a 100644 --- a/lib/src/screens/exchange/widgets/base_exchange_widget.dart +++ b/lib/src/screens/exchange/widgets/base_exchange_widget.dart @@ -486,7 +486,7 @@ class BaseExchangeWidgetState extends State { } if (state is TradeIsCreatedSuccessfully) { Navigator.of(context) - .pushNamed(Routes.exchangeConfirm, arguments: state.trade); + .pushNamed(Routes.exchangeConfirm); } }); diff --git a/lib/src/screens/exchange_trade/exchange_confirm_page.dart b/lib/src/screens/exchange_trade/exchange_confirm_page.dart index 0ad35f423..7cdb61c47 100644 --- a/lib/src/screens/exchange_trade/exchange_confirm_page.dart +++ b/lib/src/screens/exchange_trade/exchange_confirm_page.dart @@ -1,3 +1,4 @@ +import 'package:cake_wallet/store/dashboard/trades_store.dart'; import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/services.dart'; @@ -9,33 +10,14 @@ import 'package:cake_wallet/src/domain/exchange/trade.dart'; import 'package:cake_wallet/palette.dart'; class ExchangeConfirmPage extends BasePage { - ExchangeConfirmPage({@required this.trade}); + ExchangeConfirmPage({@required this.tradesStore}) : trade = tradesStore.trade; + final TradesStore tradesStore; final Trade trade; @override String get title => S.current.copy_id; - @override - Widget trailing(BuildContext context) { - final questionImage = Image.asset('assets/images/question_mark.png', - color: Theme.of(context).primaryTextTheme.title.color); - - return SizedBox( - height: 20.0, - width: 20.0, - child: ButtonTheme( - minWidth: double.minPositive, - child: FlatButton( - highlightColor: Colors.transparent, - splashColor: Colors.transparent, - padding: EdgeInsets.all(0), - onPressed: () {}, - child: questionImage), - ), - ); - } - @override Widget body(BuildContext context) { return Container( @@ -131,7 +113,7 @@ class ExchangeConfirmPage extends BasePage { ), PrimaryButton( onPressed: () => Navigator.of(context) - .pushReplacementNamed(Routes.exchangeTrade, arguments: trade), + .pushReplacementNamed(Routes.exchangeTrade), text: S.of(context).saved_the_trade_id, color: Palette.blueCraiola, textColor: Colors.white) diff --git a/lib/src/screens/exchange_trade/exchange_trade_item.dart b/lib/src/screens/exchange_trade/exchange_trade_item.dart new file mode 100644 index 000000000..78e9995ad --- /dev/null +++ b/lib/src/screens/exchange_trade/exchange_trade_item.dart @@ -0,0 +1,13 @@ +import 'package:flutter/cupertino.dart'; + +class ExchangeTradeItem { + ExchangeTradeItem({ + @required this.title, + @required this.data, + @required this.isCopied, + }); + + final String title; + final String data; + final bool isCopied; +} \ No newline at end of file diff --git a/lib/src/screens/exchange_trade/exchange_trade_page.dart b/lib/src/screens/exchange_trade/exchange_trade_page.dart index 05602a7fd..5b8ce2525 100644 --- a/lib/src/screens/exchange_trade/exchange_trade_page.dart +++ b/lib/src/screens/exchange_trade/exchange_trade_page.dart @@ -1,5 +1,9 @@ +import 'package:cake_wallet/palette.dart'; import 'package:cake_wallet/src/domain/common/crypto_currency.dart'; import 'package:cake_wallet/src/domain/exchange/exchange_provider_description.dart'; +import 'package:cake_wallet/src/screens/exchange_trade/exchange_trade_item.dart'; +import 'package:cake_wallet/src/screens/exchange_trade/information_page.dart'; +import 'package:cake_wallet/view_model/exchange/exchange_trade_view_model.dart'; import 'package:mobx/mobx.dart'; import 'package:provider/provider.dart'; import 'package:flutter_mobx/flutter_mobx.dart'; @@ -19,15 +23,62 @@ import 'package:cake_wallet/src/widgets/scollable_with_bottom_section.dart'; import 'package:cake_wallet/src/widgets/alert_with_one_action.dart'; import 'package:cake_wallet/src/widgets/alert_with_two_actions.dart'; +void showInformation(ExchangeTradeViewModel exchangeTradeViewModel, BuildContext context) { + final fetchingLabel = S.current.fetching; + final trade = exchangeTradeViewModel.trade; + final walletName = exchangeTradeViewModel.wallet.name; + + final information = exchangeTradeViewModel.isSendable + ? S.current.exchange_result_confirm( + trade.amount ?? fetchingLabel, + trade.from.toString(), + walletName) + : S.current.exchange_result_description( + trade.amount ?? fetchingLabel, trade.from.toString()); + + showDialog( + context: context, + builder: (_) => InformationPage(information: information) + ); +} + class ExchangeTradePage extends BasePage { + ExchangeTradePage({@required this.exchangeTradeViewModel}); + + final ExchangeTradeViewModel exchangeTradeViewModel; + @override String get title => S.current.exchange; @override - Widget body(BuildContext context) => ExchangeTradeForm(); + Widget trailing(BuildContext context) { + final questionImage = Image.asset('assets/images/question_mark.png', + color: Theme.of(context).primaryTextTheme.title.color); + + return SizedBox( + height: 20.0, + width: 20.0, + child: ButtonTheme( + minWidth: double.minPositive, + child: FlatButton( + highlightColor: Colors.transparent, + splashColor: Colors.transparent, + padding: EdgeInsets.all(0), + onPressed: () => showInformation(exchangeTradeViewModel, context), + child: questionImage), + ), + ); + } + + @override + Widget body(BuildContext context) => ExchangeTradeForm(exchangeTradeViewModel); } class ExchangeTradeForm extends StatefulWidget { + ExchangeTradeForm(this.exchangeTradeViewModel); + + final ExchangeTradeViewModel exchangeTradeViewModel; + @override ExchangeTradeState createState() => ExchangeTradeState(); } @@ -35,23 +86,49 @@ class ExchangeTradeForm extends StatefulWidget { class ExchangeTradeState extends State { final fetchingLabel = S.current.fetching; String get title => S.current.exchange; + List items; bool _effectsInstalled = false; @override - Widget build(BuildContext context) { - final tradeStore = Provider.of(context); - final sendStore = Provider.of(context); - final walletStore = Provider.of(context); + void initState() { + super.initState(); + WidgetsBinding.instance.addPostFrameCallback(afterLayout); - _setEffects(context); + items = [ + ExchangeTradeItem( + title: S.current.id, + data: '${widget.exchangeTradeViewModel.trade.id ?? fetchingLabel}', + isCopied: true), + ExchangeTradeItem( + title: S.current.amount, + data: '${widget.exchangeTradeViewModel.trade.amount ?? fetchingLabel}', + isCopied: false), + ExchangeTradeItem( + title: S.current.status, + data: '${widget.exchangeTradeViewModel.trade.state ?? fetchingLabel}', + isCopied: false), + ExchangeTradeItem( + title: S.current.widgets_address, + data: widget.exchangeTradeViewModel.trade.inputAddress ?? fetchingLabel, + isCopied: true), + ]; + } + + void afterLayout(dynamic _) { + showInformation(widget.exchangeTradeViewModel, context); + } + + @override + Widget build(BuildContext context) { + + //_setEffects(context); return Container( child: ScrollableWithBottomSection( contentPadding: EdgeInsets.only(left: 24, right: 24, top: 24), content: Observer(builder: (_) { - final trade = tradeStore.trade; - final walletName = walletStore.name; + final trade = widget.exchangeTradeViewModel.trade; return Column( mainAxisAlignment: MainAxisAlignment.start, @@ -268,10 +345,10 @@ class ExchangeTradeState extends State { ], ), ), - Container( + /*Container( padding: EdgeInsets.only(top: 20), child: Text( - tradeStore.isSendable + widget.exchangeTradeViewModel.isSendable ? S.of(context).exchange_result_confirm( trade.amount ?? fetchingLabel, trade.from.toString(), @@ -283,7 +360,7 @@ class ExchangeTradeState extends State { fontSize: 13.0, color: Theme.of(context).primaryTextTheme.title.color), ), - ), + ),*/ Text( S.of(context).exchange_result_write_down_ID, textAlign: TextAlign.left, @@ -295,7 +372,13 @@ class ExchangeTradeState extends State { ); }), bottomSectionPadding: EdgeInsets.all(24), - bottomSection: Observer( + bottomSection: PrimaryButton( + onPressed: () {}, + text: S.of(context).confirm, + color: Palette.blueCraiola, + textColor: Colors.white + ) + /*Observer( builder: (_) => tradeStore.trade.from == CryptoCurrency.xmr && !(sendStore.state is TransactionCommitted) ? LoadingPrimaryButton( @@ -312,7 +395,7 @@ class ExchangeTradeState extends State { : S.of(context).send_xmr, color: Colors.blue, textColor: Colors.white) - : Offstage()), + : Offstage()),*/ ), ); } @@ -322,7 +405,7 @@ class ExchangeTradeState extends State { return; } - final sendStore = Provider.of(context); + /*final sendStore = Provider.of(context); reaction((_) => sendStore.state, (SendingState state) { if (state is SendingFailed) { @@ -376,7 +459,7 @@ class ExchangeTradeState extends State { }); }); } - }); + });*/ _effectsInstalled = true; } diff --git a/lib/src/screens/exchange_trade/information_page.dart b/lib/src/screens/exchange_trade/information_page.dart new file mode 100644 index 000000000..bf622cb86 --- /dev/null +++ b/lib/src/screens/exchange_trade/information_page.dart @@ -0,0 +1,57 @@ +import 'dart:ui'; +import 'package:cake_wallet/generated/i18n.dart'; +import 'package:cake_wallet/src/widgets/primary_button.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:cake_wallet/src/widgets/alert_background.dart'; + +class InformationPage extends StatelessWidget { + InformationPage({@required this.information}); + + final String information; + + @override + Widget build(BuildContext context) { + return AlertBackground( + child: Center( + child: Container( + margin: EdgeInsets.only( + left: 24, + right: 24 + ), + decoration: BoxDecoration( + borderRadius: BorderRadius.all(Radius.circular(30)), + color: Theme.of(context).textTheme.body2.decorationColor + ), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Container( + padding: EdgeInsets.fromLTRB(24, 28, 24, 24), + child: Text( + information, + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.normal, + fontFamily: 'Poppins', + decoration: TextDecoration.none, + color: Theme.of(context).accentTextTheme.caption.decorationColor + ), + ), + ), + Padding( + padding: EdgeInsets.fromLTRB(10, 0, 10, 10), + child: PrimaryButton( + onPressed: () => Navigator.of(context).pop(), + text: S.of(context).send_got_it, + color: Theme.of(context).accentTextTheme.caption.backgroundColor, + textColor: Theme.of(context).primaryTextTheme.title.color + ), + ) + ], + ), + ), + ) + ); + } +} diff --git a/lib/src/screens/exchange_trade/widgets/exchange_trade_row.dart b/lib/src/screens/exchange_trade/widgets/exchange_trade_row.dart new file mode 100644 index 000000000..ba20dd413 --- /dev/null +++ b/lib/src/screens/exchange_trade/widgets/exchange_trade_row.dart @@ -0,0 +1,8 @@ +import 'package:flutter/material.dart'; + +class ExchangeTradeRow extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Container(); + } +} \ No newline at end of file diff --git a/lib/store/dashboard/trade_filter_store.dart b/lib/store/dashboard/trade_filter_store.dart index 2e1c7ed62..064b092f6 100644 --- a/lib/store/dashboard/trade_filter_store.dart +++ b/lib/store/dashboard/trade_filter_store.dart @@ -11,8 +11,7 @@ abstract class TradeFilterStoreBase with Store { TradeFilterStoreBase( {this.displayXMRTO = true, this.displayChangeNow = true, - this.displayMorphToken = true, - this.wallet}); + this.displayMorphToken = true}); @observable bool displayXMRTO; @@ -23,8 +22,6 @@ abstract class TradeFilterStoreBase with Store { @observable bool displayMorphToken; - WalletBase wallet; - @action void toggleDisplayExchange(ExchangeProviderDescription provider) { switch (provider) { @@ -40,7 +37,7 @@ abstract class TradeFilterStoreBase with Store { } } - List filtered({List trades}) { + List filtered({List trades, WalletBase wallet}) { final _trades = trades.where((item) => item.trade.walletId == wallet.id).toList(); final needToFilter = !displayChangeNow || !displayXMRTO || !displayMorphToken; diff --git a/lib/store/dashboard/trades_store.dart b/lib/store/dashboard/trades_store.dart index 4f526c637..26a6b292b 100644 --- a/lib/store/dashboard/trades_store.dart +++ b/lib/store/dashboard/trades_store.dart @@ -27,6 +27,12 @@ abstract class TradesStoreBase with Store { @observable List trades; + @observable + Trade trade; + + @action + void setTrade(Trade trade) => this.trade = trade; + @action Future updateTradeList() async => trades = tradesSource.values.map((trade) => TradeListItem( diff --git a/lib/themes.dart b/lib/themes.dart index be4a5d1d4..f92eb2fa6 100644 --- a/lib/themes.dart +++ b/lib/themes.dart @@ -127,11 +127,7 @@ class Themes { caption: TextStyle( color: Palette.moderateLavender, // container (confirm exchange) backgroundColor: Palette.moderateLavender, // button background (confirm exchange) - - - - - decorationColor: Palette.lavender, // gradient end, wallet label + decorationColor: Palette.darkBlueCraiola, // text color (information page) ), @@ -283,10 +279,7 @@ class Themes { caption: TextStyle( color: PaletteDark.nightBlue, // container (confirm exchange) backgroundColor: PaletteDark.deepVioletBlue, // button background (confirm exchange) - - - - decorationColor: PaletteDark.nightBlue, // gradient end, wallet label + decorationColor: Palette.darkLavender, // text color (information page) ), diff --git a/lib/view_model/dashboard/dashboard_view_model.dart b/lib/view_model/dashboard/dashboard_view_model.dart index c98ddc1e9..c2c96eace 100644 --- a/lib/view_model/dashboard/dashboard_view_model.dart +++ b/lib/view_model/dashboard/dashboard_view_model.dart @@ -108,8 +108,7 @@ abstract class DashboardViewModelBase with Store { _items .addAll(transactionFilterStore.filtered(transactions: transactions)); - //_items.addAll(tradeFilterStore.filtered(trades: trades)); - _items.addAll(trades); // FIXME + _items.addAll(tradeFilterStore.filtered(trades: trades, wallet: wallet)); return formattedItemsList(_items); } diff --git a/lib/view_model/exchange/exchange_trade_view_model.dart b/lib/view_model/exchange/exchange_trade_view_model.dart new file mode 100644 index 000000000..af988428c --- /dev/null +++ b/lib/view_model/exchange/exchange_trade_view_model.dart @@ -0,0 +1,68 @@ +import 'dart:async'; +import 'package:cake_wallet/core/wallet_base.dart'; +import 'package:cake_wallet/src/domain/exchange/changenow/changenow_exchange_provider.dart'; +import 'package:cake_wallet/src/domain/exchange/exchange_provider.dart'; +import 'package:cake_wallet/src/domain/exchange/exchange_provider_description.dart'; +import 'package:cake_wallet/src/domain/exchange/morphtoken/morphtoken_exchange_provider.dart'; +import 'package:cake_wallet/src/domain/exchange/trade.dart'; +import 'package:cake_wallet/src/domain/exchange/xmrto/xmrto_exchange_provider.dart'; +import 'package:cake_wallet/store/dashboard/trades_store.dart'; +import 'package:hive/hive.dart'; +import 'package:mobx/mobx.dart'; + +part 'exchange_trade_view_model.g.dart'; + +class ExchangeTradeViewModel = ExchangeTradeViewModelBase with _$ExchangeTradeViewModel; + +abstract class ExchangeTradeViewModelBase with Store { + ExchangeTradeViewModelBase({this.wallet, this.trades, this.tradesStore}) { + trade = tradesStore.trade; + + isSendable = trade.from == wallet.currency || + trade.provider == ExchangeProviderDescription.xmrto; + + switch (trade.provider) { + case ExchangeProviderDescription.xmrto: + _provider = XMRTOExchangeProvider(); + break; + case ExchangeProviderDescription.changeNow: + _provider = ChangeNowExchangeProvider(); + break; + case ExchangeProviderDescription.morphToken: + _provider = MorphTokenExchangeProvider(trades: trades); + break; + } + + _updateTrade(); + _timer = Timer.periodic(Duration(seconds: 20), (_) async => _updateTrade()); + } + + final WalletBase wallet; + final Box trades; + final TradesStore tradesStore; + + @observable + Trade trade; + + @observable + bool isSendable; + + ExchangeProvider _provider; + + Timer _timer; + + @action + Future _updateTrade() async { + try { + final updatedTrade = await _provider.findTradeById(id: trade.id); + + if (updatedTrade.createdAt == null && trade.createdAt != null) { + updatedTrade.createdAt = trade.createdAt; + } + + trade = updatedTrade; + } catch (e) { + print(e.toString()); + } + } +} \ No newline at end of file diff --git a/lib/view_model/exchange/exchange_view_model.dart b/lib/view_model/exchange/exchange_view_model.dart index bec3a5754..44430a073 100644 --- a/lib/view_model/exchange/exchange_view_model.dart +++ b/lib/view_model/exchange/exchange_view_model.dart @@ -4,6 +4,7 @@ import 'package:cake_wallet/src/domain/exchange/exchange_provider.dart'; import 'package:cake_wallet/src/domain/exchange/limits.dart'; import 'package:cake_wallet/src/domain/exchange/trade.dart'; import 'package:cake_wallet/src/stores/exchange/limits_state.dart'; +import 'package:cake_wallet/store/dashboard/trades_store.dart'; import 'package:intl/intl.dart'; import 'package:mobx/mobx.dart'; import 'package:cake_wallet/generated/i18n.dart'; @@ -24,7 +25,12 @@ part 'exchange_view_model.g.dart'; class ExchangeViewModel = ExchangeViewModelBase with _$ExchangeViewModel; abstract class ExchangeViewModelBase with Store { - ExchangeViewModelBase({this.wallet, this.trades, this.exchangeTemplateStore}) { + ExchangeViewModelBase({ + this.wallet, + this.trades, + this.exchangeTemplateStore, + this.tradesStore}) { + providerList = [ XMRTOExchangeProvider(), ChangeNowExchangeProvider(), @@ -50,6 +56,7 @@ abstract class ExchangeViewModelBase with Store { final WalletBase wallet; final Box trades; final ExchangeTemplateStore exchangeTemplateStore; + final TradesStore tradesStore; @observable ExchangeProvider provider; @@ -220,6 +227,7 @@ abstract class ExchangeViewModelBase with Store { tradeState = TradeIsCreating(); final trade = await provider.createTrade(request: request); trade.walletId = wallet.id; + tradesStore.setTrade(trade); await trades.add(trade); tradeState = TradeIsCreatedSuccessfully(trade: trade); } catch (e) { diff --git a/res/values/strings_de.arb b/res/values/strings_de.arb index cc97e8a72..68095ca01 100644 --- a/res/values/strings_de.arb +++ b/res/values/strings_de.arb @@ -88,8 +88,8 @@ "offer_expires_in" : "Angebot läuft ab in: ", "trade_is_powered_by" : "Dieser Handel wird betrieben von ${provider}", "copy_address" : "Adresse kopieren", - "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", - "exchange_result_description" : "Bitte senden ${fetchingLabel} ${from} an die oben angegebene Adresse.\n\n'", + "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.", + "exchange_result_description" : "Bitte senden ${fetchingLabel} ${from} an die oben angegebene Adresse.'", "exchange_result_write_down_ID" : "*Bitte kopieren oder notieren Sie Ihren oben gezeigten Ausweis.", "confirm" : "Bestätigen", "confirm_sending" : "Bestätigen Sie das Senden", diff --git a/res/values/strings_en.arb b/res/values/strings_en.arb index 362e493bf..6c0fd2864 100644 --- a/res/values/strings_en.arb +++ b/res/values/strings_en.arb @@ -88,8 +88,8 @@ "offer_expires_in" : "Offer expires in: ", "trade_is_powered_by" : "This trade is powered by ${provider}", "copy_address" : "Copy Address", - "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", - "exchange_result_description" : "Please send ${fetchingLabel} ${from} to the address shown above.\n\n", + "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.", + "exchange_result_description" : "Please send ${fetchingLabel} ${from} to the address shown above.", "exchange_result_write_down_ID" : "*Please copy or write down your ID shown above.", "confirm" : "Confirm", "confirm_sending" : "Confirm sending", diff --git a/res/values/strings_es.arb b/res/values/strings_es.arb index cfaeb7a42..8b3857186 100644 --- a/res/values/strings_es.arb +++ b/res/values/strings_es.arb @@ -88,8 +88,8 @@ "offer_expires_in" : "Oferta expira en: ", "trade_is_powered_by" : "Este comercio es impulsado por ${provider}", "copy_address" : "Copiar dirección ", - "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", - "exchange_result_description" : "Envíe ${fetchingLabel} ${from} a la dirección que se muestra arriba.\n\n'", + "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.", + "exchange_result_description" : "Envíe ${fetchingLabel} ${from} a la dirección que se muestra arriba.", "exchange_result_write_down_ID" : "*Copie o escriba su identificación que se muestra arriba.", "confirm" : "Confirmar", "confirm_sending" : "Confirmar envío", diff --git a/res/values/strings_hi.arb b/res/values/strings_hi.arb index 7e43ebbc9..2920c8953 100644 --- a/res/values/strings_hi.arb +++ b/res/values/strings_hi.arb @@ -88,8 +88,8 @@ "offer_expires_in" : "में ऑफर समाप्त हो रहा है: ", "trade_is_powered_by" : "यह व्यापार द्वारा संचालित है ${provider}", "copy_address" : "पता कॉपी करें", - "exchange_result_confirm" : "पुष्टि दबाकर, आप भेज रहे होंगे ${fetchingLabel} ${from} अपने बटुए से ${walletName} ऊपर दिखाए गए पते पर। या आप अपने बाहरी वॉलेट से उपरोक्त पते / क्यूआर कोड पर भेज सकते हैं।\n\nकृपया जारी रखने या राशि बदलने के लिए वापस जाने के लिए पुष्टि करें दबाएं.\n\n", - "exchange_result_description" : "कृपया भेजें ${fetchingLabel} ${from} ऊपर दिखाए गए पते पर\n\n'", + "exchange_result_confirm" : "पुष्टि दबाकर, आप भेज रहे होंगे ${fetchingLabel} ${from} अपने बटुए से ${walletName} ऊपर दिखाए गए पते पर। या आप अपने बाहरी वॉलेट से उपरोक्त पते / क्यूआर कोड पर भेज सकते हैं।\n\nकृपया जारी रखने या राशि बदलने के लिए वापस जाने के लिए पुष्टि करें दबाएं.", + "exchange_result_description" : "कृपया भेजें ${fetchingLabel} ${from} ऊपर दिखाए गए पते पर", "exchange_result_write_down_ID" : "*कृपया ऊपर दिखाए गए अपने ID को कॉपी या लिख लें.", "confirm" : "की पुष्टि करें", "confirm_sending" : "भेजने की पुष्टि करें", diff --git a/res/values/strings_ja.arb b/res/values/strings_ja.arb index 173317288..a7602342c 100644 --- a/res/values/strings_ja.arb +++ b/res/values/strings_ja.arb @@ -88,8 +88,8 @@ "offer_expires_in" : "で有効期限が切れます: ", "trade_is_powered_by" : "この取引は ${provider}", "copy_address" : "住所をコピー", - "exchange_result_confirm" : "確認を押すと、送信されます ${fetchingLabel} ${from} と呼ばれるあなたの財布から ${walletName} 上記のアドレスへ. または、外部ウォレットから上記のアドレス/ QRコードに送信できます.\n\n確認を押して続行するか、戻って金額を変更してください.\n\n", - "exchange_result_description" : "送信してください ${fetchingLabel} ${from} 上記のアドレスへ.\n\n'", + "exchange_result_confirm" : "確認を押すと、送信されます ${fetchingLabel} ${from} と呼ばれるあなたの財布から ${walletName} 上記のアドレスへ. または、外部ウォレットから上記のアドレス/ QRコードに送信できます.\n\n確認を押して続行するか、戻って金額を変更してください.", + "exchange_result_description" : "送信してください ${fetchingLabel} ${from} 上記のアドレスへ.", "exchange_result_write_down_ID" : "*上記のIDをコピーまたは書き留めてください.", "confirm" : "確認する", "confirm_sending" : "送信を確認", diff --git a/res/values/strings_ko.arb b/res/values/strings_ko.arb index 3c817739c..31d7f6cfd 100644 --- a/res/values/strings_ko.arb +++ b/res/values/strings_ko.arb @@ -88,8 +88,8 @@ "offer_expires_in" : "쿠폰 만료일: ", "trade_is_powered_by" : "이 거래는 ${provider}", "copy_address" : "주소 복사", - "exchange_result_confirm" : "확인을 누르면 전송됩니다 ${fetchingLabel} ${from} 지갑에서 ${walletName} 위에 표시된 주소로. 또는 외부 지갑에서 위의 주소 / QR 코드로 보낼 수 있습니다.\n\n확인을 눌러 계속하거나 금액을 변경하려면 돌아가십시오.\n\n", - "exchange_result_description" : "보내주세요 ${fetchingLabel} ${from} 위에 표시된 주소로.\n\n'", + "exchange_result_confirm" : "확인을 누르면 전송됩니다 ${fetchingLabel} ${from} 지갑에서 ${walletName} 위에 표시된 주소로. 또는 외부 지갑에서 위의 주소 / QR 코드로 보낼 수 있습니다.\n\n확인을 눌러 계속하거나 금액을 변경하려면 돌아가십시오.", + "exchange_result_description" : "보내주세요 ${fetchingLabel} ${from} 위에 표시된 주소로.", "exchange_result_write_down_ID" : "*위에 표시된 ID를 복사하거나 적어 두십시오.", "confirm" : "확인", "confirm_sending" : "전송 확인", diff --git a/res/values/strings_nl.arb b/res/values/strings_nl.arb index 3e2e4cb0c..8bdebe752 100644 --- a/res/values/strings_nl.arb +++ b/res/values/strings_nl.arb @@ -88,8 +88,8 @@ "offer_expires_in" : "Aanbieding verloopt over: ", "trade_is_powered_by" : "Deze transactie wordt mogelijk gemaakt door ${provider}", "copy_address" : "Adres kopiëren", - "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", - "exchange_result_description" : "Zend alstublieft ${fetchingLabel} ${from} naar bovenstaand adres.\n\n'", + "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.", + "exchange_result_description" : "Zend alstublieft ${fetchingLabel} ${from} naar bovenstaand adres.", "exchange_result_write_down_ID" : "*Kopieer of noteer uw hierboven getoonde ID.", "confirm" : "Bevestigen", "confirm_sending" : "Bevestig verzending", diff --git a/res/values/strings_pl.arb b/res/values/strings_pl.arb index e992deb50..142813bad 100644 --- a/res/values/strings_pl.arb +++ b/res/values/strings_pl.arb @@ -88,8 +88,8 @@ "offer_expires_in" : "Oferta wygasa za ", "trade_is_powered_by" : "Ten handel jest zasilany przez ${provider}", "copy_address" : "Skopiuj adress", - "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", - "exchange_result_description" : "Proszę wyślij ${fetchingLabel} ${from} na adres podany powyżej.\n\n'", + "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.", + "exchange_result_description" : "Proszę wyślij ${fetchingLabel} ${from} na adres podany powyżej.", "exchange_result_write_down_ID" : "*Skopiuj lub zanotuj swój identyfikator pokazany powyżej.", "confirm" : "Potwierdzać", "confirm_sending" : "Potwierdź wysłanie", diff --git a/res/values/strings_pt.arb b/res/values/strings_pt.arb index 59919ecbf..d0492d3c3 100644 --- a/res/values/strings_pt.arb +++ b/res/values/strings_pt.arb @@ -88,8 +88,8 @@ "offer_expires_in" : "A oferta expira em: ", "trade_is_powered_by" : "Troca realizada por ${provider}", "copy_address" : "Copiar endereço", - "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", - "exchange_result_description" : "Por favor, envie ${fetchingLabel} ${from} para o endereço mostrado acima.\n\n'", + "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.", + "exchange_result_description" : "Por favor, envie ${fetchingLabel} ${from} para o endereço mostrado acima.", "exchange_result_write_down_ID" : "*Copie ou anote seu ID mostrado acima.", "confirm" : "Confirmar", "confirm_sending" : "Confirmar o envio", diff --git a/res/values/strings_ru.arb b/res/values/strings_ru.arb index 81a2c76b8..48a757456 100644 --- a/res/values/strings_ru.arb +++ b/res/values/strings_ru.arb @@ -88,8 +88,8 @@ "offer_expires_in" : "Предложение истекает через: ", "trade_is_powered_by" : "Сделка выполнена через ${provider}", "copy_address" : "Cкопировать адрес", - "exchange_result_confirm" : "Нажимая подтвердить, вы отправите ${fetchingLabel} ${from} с вашего кошелька ${walletName} на адрес указанный выше. Или вы можете отправить со своего внешнего кошелька на вышеуказанный адрес/QR-код.\n\nПожалуйста, нажмите подтвердить для продолжения, или вернитесь назад для изменения суммы.\n\n", - "exchange_result_description" : "Пожалуйста отправьте ${fetchingLabel} ${from} на адрес, указанный выше.\n\n'", + "exchange_result_confirm" : "Нажимая подтвердить, вы отправите ${fetchingLabel} ${from} с вашего кошелька ${walletName} на адрес указанный выше. Или вы можете отправить со своего внешнего кошелька на вышеуказанный адрес/QR-код.\n\nПожалуйста, нажмите подтвердить для продолжения, или вернитесь назад для изменения суммы.", + "exchange_result_description" : "Пожалуйста отправьте ${fetchingLabel} ${from} на адрес, указанный выше.", "exchange_result_write_down_ID" : "*Пожалуйста, скопируйте или запишите ID, указанный выше.", "confirm" : "Подтвердить", "confirm_sending" : "Подтвердить отправку", diff --git a/res/values/strings_uk.arb b/res/values/strings_uk.arb index 31268c9d3..07aee1b92 100644 --- a/res/values/strings_uk.arb +++ b/res/values/strings_uk.arb @@ -88,8 +88,8 @@ "offer_expires_in" : "Пропозиція закінчиться через: ", "trade_is_powered_by" : "Операція виконана через ${provider}", "copy_address" : "Cкопіювати адресу", - "exchange_result_confirm" : "Натиснувши підтвердити, ви відправите ${fetchingLabel} ${from} з вашого гаманця ${walletName} на адресу вказану вище. Або ви можете відправити зі свого зовнішнього гаманця на вищевказану адресу/QR-код.\n\nБудь ласка, натисніть підтвердити для продовження або поверніться назад щоб змінити суму.\n\n", - "exchange_result_description" : "Будь ласка, відправте ${fetchingLabel} ${from} на адресу, вказану вище.\n\n'", + "exchange_result_confirm" : "Натиснувши підтвердити, ви відправите ${fetchingLabel} ${from} з вашого гаманця ${walletName} на адресу вказану вище. Або ви можете відправити зі свого зовнішнього гаманця на вищевказану адресу/QR-код.\n\nБудь ласка, натисніть підтвердити для продовження або поверніться назад щоб змінити суму.", + "exchange_result_description" : "Будь ласка, відправте ${fetchingLabel} ${from} на адресу, вказану вище.", "exchange_result_write_down_ID" : "*Будь ласка, скопіюйте або запишіть ID, вказаний вище.", "confirm" : "Підтвердити", "confirm_sending" : "Підтвердити відправлення", diff --git a/res/values/strings_zh.arb b/res/values/strings_zh.arb index 0450aa214..6ae909518 100644 --- a/res/values/strings_zh.arb +++ b/res/values/strings_zh.arb @@ -88,8 +88,8 @@ "offer_expires_in" : "优惠有效期至 ", "trade_is_powered_by" : "该交易由 ${provider}", "copy_address" : "复制地址", - "exchange_result_confirm" : "点击确认 您将发送 ${fetchingLabel} ${from} 从你的钱包里 ${walletName} 到上面显示的地址. 或者,您也可以从外部钱包发送上述地址/ QR码。\n\n请按确认继续或返回以更改金额\n\n", - "exchange_result_description" : "请发送 ${fetchingLabel} ${from} 到上面显示的地址.\n\n'", + "exchange_result_confirm" : "点击确认 您将发送 ${fetchingLabel} ${from} 从你的钱包里 ${walletName} 到上面显示的地址. 或者,您也可以从外部钱包发送上述地址/ QR码。\n\n请按确认继续或返回以更改金额", + "exchange_result_description" : "请发送 ${fetchingLabel} ${from} 到上面显示的地址.", "exchange_result_write_down_ID" : "*请复制或写下您上面显示的ID.", "confirm" : "确认", "confirm_sending" : "确认发送",