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;