From dd47a82a0d7c50e75217b04f52df7f5a5151ffe5 Mon Sep 17 00:00:00 2001
From: Serhii <borodenko.sv@gmail.com>
Date: Mon, 21 Feb 2022 16:30:48 +0200
Subject: [PATCH] sync status icon added on the Send and Exchange screens
 (#267)

* added sync status icon

* resolved issues from code review

* resolved issues from code review

* resolved issues from code review
---
 .../dashboard/widgets/sync_indicator.dart     | 14 +++----------
 .../widgets/sync_indicator_icon.dart          | 21 +++++++++++++++++++
 lib/src/screens/exchange/exchange_page.dart   | 14 +++++++++++--
 lib/src/screens/send/send_page.dart           | 12 +++++++++++
 4 files changed, 48 insertions(+), 13 deletions(-)
 create mode 100644 lib/src/screens/dashboard/widgets/sync_indicator_icon.dart

diff --git a/lib/src/screens/dashboard/widgets/sync_indicator.dart b/lib/src/screens/dashboard/widgets/sync_indicator.dart
index ba434d588..18e751f80 100644
--- a/lib/src/screens/dashboard/widgets/sync_indicator.dart
+++ b/lib/src/screens/dashboard/widgets/sync_indicator.dart
@@ -4,6 +4,7 @@ import 'package:cake_wallet/core/sync_status_title.dart';
 import 'package:cake_wallet/palette.dart';
 import 'package:flutter_mobx/flutter_mobx.dart';
 import 'package:cw_core/sync_status.dart';
+import 'package:cake_wallet/src/screens/dashboard/widgets/sync_indicator_icon.dart';
 
 class SyncIndicator extends StatelessWidget {
   SyncIndicator({@required this.dashboardViewModel});
@@ -22,9 +23,7 @@ class SyncIndicator extends StatelessWidget {
         final indicatorWidth = progress < 1
             ? indicatorOffset > 0 ? indicatorOffset : 0.0
             : syncIndicatorWidth;
-        final indicatorColor = status is SyncedSyncStatus
-                               ? PaletteDark.brightGreen
-                               : Theme.of(context).textTheme.caption.color;
+
 
         return ClipRRect(
           borderRadius: BorderRadius.all(Radius.circular(15)),
@@ -57,14 +56,7 @@ class SyncIndicator extends StatelessWidget {
                     mainAxisAlignment: MainAxisAlignment.center,
                     crossAxisAlignment: CrossAxisAlignment.center,
                     children: <Widget>[
-                      Container(
-                        height: 4,
-                        width: 4,
-                        decoration: BoxDecoration(
-                          shape: BoxShape.circle,
-                          color: indicatorColor
-                        ),
-                      ),
+                      SyncIndicatorIcon(isSynced:status is SyncedSyncStatus),
                       Padding(
                         padding: EdgeInsets.only(left: 6),
                         child: Text(
diff --git a/lib/src/screens/dashboard/widgets/sync_indicator_icon.dart b/lib/src/screens/dashboard/widgets/sync_indicator_icon.dart
new file mode 100644
index 000000000..a9baed3c6
--- /dev/null
+++ b/lib/src/screens/dashboard/widgets/sync_indicator_icon.dart
@@ -0,0 +1,21 @@
+import 'package:flutter/material.dart';
+import 'package:cake_wallet/palette.dart';
+
+class SyncIndicatorIcon extends StatelessWidget {
+  SyncIndicatorIcon({this.isSynced});
+
+  final bool isSynced;
+
+  @override
+  Widget build(BuildContext context) {
+    return Container(
+      height: 4,
+      width: 4,
+      decoration: BoxDecoration(
+          shape: BoxShape.circle,
+          color: isSynced
+              ? PaletteDark.brightGreen
+              : Theme.of(context).textTheme.caption.color),
+    );
+  }
+}
diff --git a/lib/src/screens/exchange/exchange_page.dart b/lib/src/screens/exchange/exchange_page.dart
index e16930e4f..1473d1547 100644
--- a/lib/src/screens/exchange/exchange_page.dart
+++ b/lib/src/screens/exchange/exchange_page.dart
@@ -32,6 +32,7 @@ import 'package:cake_wallet/view_model/exchange/exchange_view_model.dart';
 import 'package:cake_wallet/core/address_validator.dart';
 import 'package:cake_wallet/core/amount_validator.dart';
 import 'package:cake_wallet/src/screens/exchange/widgets/present_provider_picker.dart';
+import 'package:cake_wallet/src/screens/dashboard/widgets/sync_indicator_icon.dart';
 
 class ExchangePage extends BasePage {
   ExchangePage(this.exchangeViewModel);
@@ -65,8 +66,17 @@ class ExchangePage extends BasePage {
   AppBarStyle get appBarStyle => AppBarStyle.transparent;
 
   @override
-  Widget middle(BuildContext context) =>
-      PresentProviderPicker(exchangeViewModel: exchangeViewModel);
+  Widget middle(BuildContext context) => Row(
+      mainAxisAlignment: MainAxisAlignment.center,
+      children: [
+        Padding(
+          padding: const EdgeInsets.only(right:6.0),
+          child: Observer(builder: (_) => SyncIndicatorIcon(isSynced: exchangeViewModel.status is SyncedSyncStatus),)
+        ),
+        PresentProviderPicker(exchangeViewModel: exchangeViewModel)
+      ],
+    );
+
 
   @override
   Widget trailing(BuildContext context) => TrailButton(
diff --git a/lib/src/screens/send/send_page.dart b/lib/src/screens/send/send_page.dart
index 71fff8914..71fba3b4f 100644
--- a/lib/src/screens/send/send_page.dart
+++ b/lib/src/screens/send/send_page.dart
@@ -24,6 +24,7 @@ import 'package:cake_wallet/src/screens/send/widgets/confirm_sending_alert.dart'
 import 'package:smooth_page_indicator/smooth_page_indicator.dart';
 import 'package:cake_wallet/store/yat/yat_store.dart';
 import 'package:cake_wallet/src/screens/yat/yat_sending.dart';
+import 'package:cake_wallet/src/screens/dashboard/widgets/sync_indicator_icon.dart';
 
 class SendPage extends BasePage {
   SendPage({@required this.sendViewModel}) : _formKey = GlobalKey<FormState>();
@@ -49,6 +50,17 @@ class SendPage extends BasePage {
   @override
   AppBarStyle get appBarStyle => AppBarStyle.transparent;
 
+  @override
+  Widget middle(BuildContext context) => Row(
+      mainAxisAlignment: MainAxisAlignment.center,
+      children: [
+        Padding(
+          padding: const EdgeInsets.only(right:8.0),
+          child: Observer(builder: (_) => SyncIndicatorIcon(isSynced: sendViewModel.isReadyForSend),),
+        ),super.middle(context),
+      ],
+    );
+
   @override
   Widget trailing(context) => Observer(builder: (_) {
         return sendViewModel.isBatchSending