From 068558d0c8c03f750a8f9fbeb50ab5d2efedae57 Mon Sep 17 00:00:00 2001 From: cyan Date: Fri, 4 Jul 2025 01:48:50 +0200 Subject: [PATCH] feat: add tor icon to sync bar (#2359) * feat: add tor icon to sync bar * minor readability [skip ci] --------- Co-authored-by: Omar Hatem --- assets/images/tor.svg | 6 ++++++ lib/src/screens/dashboard/widgets/sync_indicator.dart | 6 +++++- .../screens/dashboard/widgets/sync_indicator_icon.dart | 10 ++++++++-- lib/view_model/dashboard/dashboard_view_model.dart | 3 +++ 4 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 assets/images/tor.svg diff --git a/assets/images/tor.svg b/assets/images/tor.svg new file mode 100644 index 000000000..5438d1e96 --- /dev/null +++ b/assets/images/tor.svg @@ -0,0 +1,6 @@ + + + +torbrowser + + \ No newline at end of file diff --git a/lib/src/screens/dashboard/widgets/sync_indicator.dart b/lib/src/screens/dashboard/widgets/sync_indicator.dart index 526abec2f..2543e2bc5 100644 --- a/lib/src/screens/dashboard/widgets/sync_indicator.dart +++ b/lib/src/screens/dashboard/widgets/sync_indicator.dart @@ -58,7 +58,11 @@ class SyncIndicator extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ - SyncIndicatorIcon(isSynced: status is SyncedSyncStatus), + SyncIndicatorIcon( + isSynced: status is SyncedSyncStatus, + showTorIcon: dashboardViewModel.builtinTor, + size: dashboardViewModel.builtinTor ? 16 : 6, + ), 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 index 91d75af6a..238c96dac 100644 --- a/lib/src/screens/dashboard/widgets/sync_indicator_icon.dart +++ b/lib/src/screens/dashboard/widgets/sync_indicator_icon.dart @@ -1,14 +1,16 @@ import 'package:cake_wallet/themes/utils/custom_theme_colors.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_svg/svg.dart'; class SyncIndicatorIcon extends StatelessWidget { SyncIndicatorIcon( - {this.boolMode = true, this.isSynced = false, this.value = waiting, this.size = 6.0}); + {this.boolMode = true, this.isSynced = false, this.value = waiting, this.size = 6.0, this.showTorIcon = false}); final bool boolMode; final bool isSynced; final String value; final double size; + final bool showTorIcon; static const String waiting = 'waiting'; static const String actionRequired = 'action required'; @@ -46,10 +48,14 @@ class SyncIndicatorIcon extends StatelessWidget { return Container( height: size, width: size, - decoration: BoxDecoration( + decoration: showTorIcon ? null : BoxDecoration( shape: BoxShape.circle, color: indicatorColor, ), + child: showTorIcon ? SvgPicture.asset( + "assets/images/tor.svg", + color: indicatorColor, + ) : null, ); } } diff --git a/lib/view_model/dashboard/dashboard_view_model.dart b/lib/view_model/dashboard/dashboard_view_model.dart index eab0c8572..a1828c2c1 100644 --- a/lib/view_model/dashboard/dashboard_view_model.dart +++ b/lib/view_model/dashboard/dashboard_view_model.dart @@ -388,6 +388,9 @@ abstract class DashboardViewModelBase with Store { @computed String get address => wallet.walletAddresses.address; + @computed + bool get isTorEnabled => CakeTor.instance.enabled; + @computed SyncStatus get status => wallet.syncStatus;