CAKE-143 | added status parameter to exchange_view_model.dart; called alert when user tries exchange deposit xmr currency but wallet is not synchronized

OleksandrSobol committed Nov 2, 2020 at 13:33 UTC 7ce30e08b0286b151bdec31c0a24b885787333ab
2 files changed +29 -13
lib/src/screens/exchange/exchange_page.dart
+25 -13
@@ -1,4 +1,5 @@
1 import 'dart:ui';
2 +import 'package:cake_wallet/entities/sync_status.dart';
3 import 'package:dotted_border/dotted_border.dart';
4 import 'package:flutter/cupertino.dart';
5 import 'package:flutter/material.dart';
@@ -394,19 +395,30 @@ class ExchangePage extends BasePage {
395 }),
396 ),
397 Observer(
397 - builder: (_) => LoadingPrimaryButton(
398 - text: S.of(context).exchange,
399 - onPressed: () {
400 - if (_formKey.currentState.validate()) {
401 - exchangeViewModel.createTrade();
402 - }
403 - },
404 - color:
405 - Theme.of(context).accentTextTheme.body2.color,
406 - textColor: Colors.white,
407 - isLoading: exchangeViewModel.tradeState
408 - is TradeIsCreating,
409 - )),
398 + builder: (_) => LoadingPrimaryButton(
399 + text: S.of(context).exchange,
400 + onPressed: () {
401 + if (_formKey.currentState.validate()) {
402 + if ((exchangeViewModel.depositCurrency == CryptoCurrency.xmr)
403 + &&(!(exchangeViewModel.status is SyncedSyncStatus))) {
404 + showPopUp<void>(
405 + context: context,
406 + builder: (BuildContext context) {
407 + return AlertWithOneAction(
408 + alertTitle: S.of(context).exchange,
409 + alertContent: 'Please wait until your wallet is synchronized',
410 + buttonText: S.of(context).ok,
411 + buttonAction: () => Navigator.of(context).pop());
412 + });
413 + } else {
414 + exchangeViewModel.createTrade();
415 + }
416 + }
417 + },
418 + color: Theme.of(context).accentTextTheme.body2.color,
419 + textColor: Colors.white,
420 + isLoading: exchangeViewModel.tradeState
421 + is TradeIsCreating)),
422 ]),
423 )),
424 ));
lib/view_model/exchange/exchange_view_model.dart
+4
@@ -1,5 +1,6 @@
1 import 'package:cake_wallet/core/wallet_base.dart';
2 import 'package:cake_wallet/entities/crypto_currency.dart';
3 +import 'package:cake_wallet/entities/sync_status.dart';
4 import 'package:cake_wallet/entities/wallet_type.dart';
5 import 'package:cake_wallet/exchange/exchange_provider.dart';
6 import 'package:cake_wallet/exchange/limits.dart';
@@ -100,6 +101,9 @@ abstract class ExchangeViewModelBase with Store {
101
102 NumberFormat _cryptoNumberFormat;
103
104 + @computed
105 + SyncStatus get status => wallet.syncStatus;
106 +
107 @computed
108 ObservableList<ExchangeTemplate> get templates =>
109 _exchangeTemplateStore.templates;