CAKE-120 | added xmr.to exchange description to exchange and exchange template pages; made observable isReceiveAmountEntered parameter in the exchange view model; added isReceiveAmountEntered parameter to applyTemplate() (exchange page) and reset() (exchange view model); added possibility to enter amount in receive card (exchange template page)

OleksandrSobol committed Oct 12, 2020 at 19:47 UTC 20c35451d59a76ff0b991ae11c4ce671a33ce09d
3 files changed +21 -3
lib/src/screens/exchange/exchange_page.dart
+4 -1
@@ -373,7 +373,9 @@ class ExchangePage extends BasePage {
373 child: Observer(builder: (_) {
374 final description =
375 exchangeViewModel.provider is XMRTOExchangeProvider
376 - ? S.of(context).amount_is_guaranteed
376 + ? exchangeViewModel.isReceiveAmountEntered
377 + ? S.of(context).amount_is_guaranteed
378 + : S.of(context).amount_is_estimate
379 : S.of(context).amount_is_estimate;
380 return Center(
381 child: Text(
@@ -433,6 +435,7 @@ class ExchangePage extends BasePage {
435 exchangeViewModel.changeDepositAmount(amount: template.amount);
436 exchangeViewModel.depositAddress = template.depositAddress;
437 exchangeViewModel.receiveAddress = template.receiveAddress;
438 + exchangeViewModel.isReceiveAmountEntered = false;
439 }
440
441 void _setReactions(
lib/src/screens/exchange/exchange_template_page.dart
+15 -2
@@ -1,4 +1,5 @@
1 import 'dart:ui';
2 +import 'package:cake_wallet/exchange/exchange_provider.dart';
3 import 'package:cake_wallet/exchange/exchange_template.dart';
4 import 'package:cake_wallet/src/screens/base_page.dart';
5 import 'package:cake_wallet/src/widgets/alert_with_two_actions.dart';
@@ -169,7 +170,9 @@ class ExchangeTemplatePage extends BasePage {
170 exchangeViewModel.wallet.currency
171 ? exchangeViewModel.wallet.address
172 : exchangeViewModel.receiveAddress,
172 - initialIsAmountEditable: false,
173 + initialIsAmountEditable:
174 + exchangeViewModel.provider is
175 + XMRTOExchangeProvider ? true : false,
176 initialIsAddressEditable:
177 exchangeViewModel.isReceiveAddressEnabled,
178 isAmountEstimated: true,
@@ -202,7 +205,9 @@ class ExchangeTemplatePage extends BasePage {
205 child: Observer(builder: (_) {
206 final description =
207 exchangeViewModel.provider is XMRTOExchangeProvider
205 - ? S.of(context).amount_is_guaranteed
208 + ? exchangeViewModel.isReceiveAmountEntered
209 + ? S.of(context).amount_is_guaranteed
210 + : S.of(context).amount_is_estimate
211 : S.of(context).amount_is_estimate;
212 return Center(
213 child: Text(
@@ -328,6 +333,12 @@ class ExchangeTemplatePage extends BasePage {
333 receiveKey.currentState.isAddressEditable(isEditable: isEnabled);
334 });
335
336 + reaction((_) => exchangeViewModel.provider, (ExchangeProvider provider) {
337 + provider is XMRTOExchangeProvider
338 + ? receiveKey.currentState.isAmountEditable(isEditable: true)
339 + : receiveKey.currentState.isAmountEditable(isEditable: false);
340 + });
341 +
342 /*reaction((_) => exchangeViewModel.limitsState, (LimitsState state) {
343 String min;
344 String max;
@@ -358,6 +369,7 @@ class ExchangeTemplatePage extends BasePage {
369 if (depositAmountController.text != exchangeViewModel.depositAmount) {
370 exchangeViewModel.changeDepositAmount(
371 amount: depositAmountController.text);
372 + exchangeViewModel.isReceiveAmountEntered = false;
373 }
374 });
375
@@ -368,6 +380,7 @@ class ExchangeTemplatePage extends BasePage {
380 if (receiveAmountController.text != exchangeViewModel.receiveAmount) {
381 exchangeViewModel.changeReceiveAmount(
382 amount: receiveAmountController.text);
383 + exchangeViewModel.isReceiveAmountEntered = true;
384 }
385 });
386
lib/view_model/exchange/exchange_view_model.dart
+2
@@ -93,6 +93,7 @@ abstract class ExchangeViewModelBase with Store {
93 @observable
94 bool isReceiveAddressEnabled;
95
96 + @observable
97 bool isReceiveAmountEntered;
98
99 Limits limits;
@@ -256,6 +257,7 @@ abstract class ExchangeViewModelBase with Store {
257
258 @action
259 void reset() {
260 + isReceiveAmountEntered = false;
261 depositAmount = '';
262 receiveAmount = '';
263 depositCurrency = CryptoCurrency.xmr;