diff --git a/lib/pages/home_view/home_view.dart b/lib/pages/home_view/home_view.dart index c3cad7a97..be1597adb 100644 --- a/lib/pages/home_view/home_view.dart +++ b/lib/pages/home_view/home_view.dart @@ -17,9 +17,11 @@ import 'package:flutter_svg/svg.dart'; import 'package:stackwallet/pages/buy_view/buy_view.dart'; import 'package:stackwallet/pages/exchange_view/exchange_view.dart'; import 'package:stackwallet/pages/home_view/sub_widgets/home_view_button_bar.dart'; +import 'package:stackwallet/pages/home_view/sub_widgets/tor_sync_status_changed_event.dart'; import 'package:stackwallet/pages/notification_views/notifications_view.dart'; import 'package:stackwallet/pages/settings_views/global_settings_view/global_settings_view.dart'; import 'package:stackwallet/pages/settings_views/global_settings_view/hidden_settings.dart'; +import 'package:stackwallet/pages/settings_views/global_settings_view/tor_settings/tor_settings_view.dart'; import 'package:stackwallet/pages/wallets_view/wallets_view.dart'; import 'package:stackwallet/providers/global/notifications_provider.dart'; import 'package:stackwallet/providers/ui/home_view_index_provider.dart'; @@ -55,6 +57,8 @@ class _HomeViewState extends ConsumerState { bool _exitEnabled = false; + late TorSyncStatus _currentSyncStatus; + // final _buyDataLoadingService = BuyDataLoadingService(); Future _onWillPop() async { @@ -113,6 +117,32 @@ class _HomeViewState extends ConsumerState { ); } + Widget _buildTorIcon(TorSyncStatus status) { + switch (status) { + case TorSyncStatus.unableToSync: + return SvgPicture.asset( + Assets.svg.tor, + color: Theme.of(context).extension()!.accentColorRed, + width: 20, + height: 20, + ); + case TorSyncStatus.synced: + return SvgPicture.asset( + Assets.svg.tor, + color: Theme.of(context).extension()!.accentColorGreen, + width: 20, + height: 20, + ); + case TorSyncStatus.syncing: + return SvgPicture.asset( + Assets.svg.tor, + color: Theme.of(context).extension()!.accentColorYellow, + width: 20, + height: 20, + ); + } + } + @override void initState() { _pageController = PageController(); @@ -125,6 +155,20 @@ class _HomeViewState extends ConsumerState { ref.read(notificationsProvider).startCheckingWatchedNotifications(); + /// todo change to watch tor network + // if (ref.read(managerProvider).isRefreshing) { + // _currentSyncStatus = WalletSyncStatus.syncing; + // _currentNodeStatus = NodeConnectionStatus.connected; + // } else { + // _currentSyncStatus = WalletSyncStatus.synced; + // if (ref.read(managerProvider).isConnected) { + // _currentNodeStatus = NodeConnectionStatus.connected; + // } else { + // _currentNodeStatus = NodeConnectionStatus.disconnected; + // _currentSyncStatus = WalletSyncStatus.unableToSync; + // } + // } + super.initState(); } @@ -200,6 +244,31 @@ class _HomeViewState extends ConsumerState { ], ), actions: [ + Padding( + padding: const EdgeInsets.only( + top: 10, + bottom: 10, + right: 10, + ), + child: AspectRatio( + aspectRatio: 1, + child: AppBarIconButton( + semanticsLabel: + "Tor Settings Button. Takes To Tor Settings Page.", + key: const Key("walletsViewTorButton"), + size: 36, + shadows: const [], + color: Theme.of(context) + .extension()! + .backgroundAppBar, + icon: _buildTorIcon(TorSyncStatus.syncing), + onPressed: () { + Navigator.of(context) + .pushNamed(TorSettingsView.routeName); + }, + ), + ), + ), Padding( padding: const EdgeInsets.only( top: 10, diff --git a/lib/pages/home_view/sub_widgets/tor_sync_status_changed_event.dart b/lib/pages/home_view/sub_widgets/tor_sync_status_changed_event.dart new file mode 100644 index 000000000..87910b806 --- /dev/null +++ b/lib/pages/home_view/sub_widgets/tor_sync_status_changed_event.dart @@ -0,0 +1,22 @@ +/* + * This file is part of Stack Wallet. + * + * Copyright (c) 2023 Cypher Stack + * All Rights Reserved. + * The code is distributed under GPLv3 license, see LICENSE file for details. + * Generated by Cypher Stack on 2023-05-26 + * + */ +import 'package:stackwallet/utilities/logger.dart'; + +enum TorSyncStatus { unableToSync, synced, syncing } + +class TorSyncStatusChangedEvent { + TorSyncStatus newStatus; + + TorSyncStatusChangedEvent(this.newStatus) { + Logging.instance.log( + "TorSyncStatusChangedEvent fired with arg newStatus = $newStatus", + level: LogLevel.Info); + } +}