From f6a0950c24fe9e55dbd4f6b202f644202eadde7b Mon Sep 17 00:00:00 2001 From: ryleedavis Date: Fri, 1 Sep 2023 16:50:17 -0600 Subject: [PATCH 01/13] WIP: tor settings view for mobile --- assets/svg/tor-synced.svg | 4 + assets/svg/tor-syncing.svg | 4 + assets/svg/tor.svg | 4 + .../global_settings_view.dart | 13 ++ .../tor_settings/tor_settings_view.dart | 200 ++++++++++++++++++ lib/route_generator.dart | 7 + lib/utilities/assets.dart | 3 + lib/utilities/prefs.dart | 22 ++ pubspec.yaml | 3 + 9 files changed, 260 insertions(+) create mode 100644 assets/svg/tor-synced.svg create mode 100644 assets/svg/tor-syncing.svg create mode 100644 assets/svg/tor.svg create mode 100644 lib/pages/settings_views/global_settings_view/tor_settings/tor_settings_view.dart diff --git a/assets/svg/tor-synced.svg b/assets/svg/tor-synced.svg new file mode 100644 index 000000000..20cff1f37 --- /dev/null +++ b/assets/svg/tor-synced.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/svg/tor-syncing.svg b/assets/svg/tor-syncing.svg new file mode 100644 index 000000000..b51803c70 --- /dev/null +++ b/assets/svg/tor-syncing.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/svg/tor.svg b/assets/svg/tor.svg new file mode 100644 index 000000000..a893c0907 --- /dev/null +++ b/assets/svg/tor.svg @@ -0,0 +1,4 @@ + + + + diff --git a/lib/pages/settings_views/global_settings_view/global_settings_view.dart b/lib/pages/settings_views/global_settings_view/global_settings_view.dart index 7cadc1a77..29984b928 100644 --- a/lib/pages/settings_views/global_settings_view/global_settings_view.dart +++ b/lib/pages/settings_views/global_settings_view/global_settings_view.dart @@ -25,6 +25,7 @@ import 'package:stackwallet/pages/settings_views/global_settings_view/stack_back import 'package:stackwallet/pages/settings_views/global_settings_view/startup_preferences/startup_preferences_view.dart'; import 'package:stackwallet/pages/settings_views/global_settings_view/support_view.dart'; import 'package:stackwallet/pages/settings_views/global_settings_view/syncing_preferences_views/syncing_preferences_view.dart'; +import 'package:stackwallet/pages/settings_views/global_settings_view/tor_settings/tor_settings_view.dart'; import 'package:stackwallet/pages/settings_views/sub_widgets/settings_list_button.dart'; import 'package:stackwallet/route_generator.dart'; import 'package:stackwallet/themes/stack_colors.dart'; @@ -159,6 +160,18 @@ class GlobalSettingsView extends StatelessWidget { const SizedBox( height: 8, ), + SettingsListButton( + iconAssetName: Assets.svg.tor, + iconSize: 18, + title: "Tor Settings", + onPressed: () { + Navigator.of(context) + .pushNamed(TorSettingsView.routeName); + }, + ), + const SizedBox( + height: 8, + ), SettingsListButton( iconAssetName: Assets.svg.node, iconSize: 16, diff --git a/lib/pages/settings_views/global_settings_view/tor_settings/tor_settings_view.dart b/lib/pages/settings_views/global_settings_view/tor_settings/tor_settings_view.dart new file mode 100644 index 000000000..d97cb34e2 --- /dev/null +++ b/lib/pages/settings_views/global_settings_view/tor_settings/tor_settings_view.dart @@ -0,0 +1,200 @@ +/* + * 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:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:stackwallet/providers/global/prefs_provider.dart'; +import 'package:stackwallet/themes/stack_colors.dart'; +import 'package:stackwallet/utilities/assets.dart'; +import 'package:stackwallet/utilities/constants.dart'; +import 'package:stackwallet/utilities/text_styles.dart'; +import 'package:stackwallet/utilities/util.dart'; +import 'package:stackwallet/widgets/background.dart'; +import 'package:stackwallet/widgets/custom_buttons/app_bar_icon_button.dart'; +import 'package:stackwallet/widgets/custom_buttons/draggable_switch_button.dart'; +import 'package:stackwallet/widgets/desktop/secondary_button.dart'; +import 'package:stackwallet/widgets/rounded_white_container.dart'; +import 'package:stackwallet/widgets/stack_dialog.dart'; + +class TorSettingsView extends ConsumerStatefulWidget { + const TorSettingsView({Key? key}) : super(key: key); + + static const String routeName = "/torSettings"; + + @override + ConsumerState createState() => _TorSettingsViewState(); +} + +class _TorSettingsViewState extends ConsumerState { + @override + void initState() { + super.initState(); + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final isDesktop = Util.isDesktop; + + return Background( + child: Scaffold( + backgroundColor: Colors.transparent, + appBar: AppBar( + automaticallyImplyLeading: false, + backgroundColor: + Theme.of(context).extension()!.backgroundAppBar, + leading: AppBarBackButton( + onPressed: () { + Navigator.of(context).pop(); + }, + ), + title: Text( + "Tor Settings", + style: STextStyles.navBarTitle(context), + ), + actions: [ + AspectRatio( + aspectRatio: 1, + child: AppBarIconButton( + icon: SvgPicture.asset( + Assets.svg.circleQuestion, + ), + onPressed: () { + showDialog( + context: context, + useSafeArea: false, + barrierDismissible: true, + builder: (context) { + return const StackDialog( + title: "What is Tor?", + message: + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " + "Sed sit amet nulla accumsan, ornare felis pellentesque, auctor nulla.", + rightButton: SecondaryButton( + label: "Close", + ), + ); + }, + ); + }, + ), + ), + ], + ), + body: Padding( + padding: const EdgeInsets.symmetric(horizontal: 16.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Padding( + padding: const EdgeInsets.all(10.0), + child: SvgPicture.asset( + Assets.svg.tor, + height: 200, + width: 200, + ), + ), + ], + ), + SizedBox( + height: 30, + ), + RoundedWhiteContainer( + child: Padding( + padding: const EdgeInsets.symmetric(vertical: 8.0), + child: Row( + children: [ + Text( + "Tor status", + style: STextStyles.titleBold12(context), + ), + const Spacer(), + Text( + "Tor network status", + style: STextStyles.itemSubtitle(context), + ), + ], + ), + ), + ), + SizedBox( + height: 8, + ), + RoundedWhiteContainer( + child: Consumer( + builder: (_, ref, __) { + return RawMaterialButton( + // splashColor: Theme.of(context).extension()!.highlight, + materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular( + Constants.size.circularBorderRadius, + ), + ), + onPressed: null, + child: Padding( + padding: const EdgeInsets.symmetric(vertical: 8), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + Text( + "Tor killswitch", + style: STextStyles.titleBold12(context), + ), + const SizedBox(width: 8), + SvgPicture.asset( + Assets.svg.circleInfo, + height: 16, + width: 16, + color: Theme.of(context) + .extension()! + .infoItemLabel, + ), + ], + ), + SizedBox( + height: 20, + width: 40, + child: DraggableSwitchButton( + isOn: ref.watch( + prefsChangeNotifierProvider + .select((value) => value.torKillswitch), + ), + onValueChanged: (newValue) { + ref + .read(prefsChangeNotifierProvider) + .torKillswitch = newValue; + }, + ), + ), + ], + ), + ), + ); + }, + ), + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/route_generator.dart b/lib/route_generator.dart index 344eb7876..4f18b32d4 100644 --- a/lib/route_generator.dart +++ b/lib/route_generator.dart @@ -110,6 +110,7 @@ import 'package:stackwallet/pages/settings_views/global_settings_view/support_vi import 'package:stackwallet/pages/settings_views/global_settings_view/syncing_preferences_views/syncing_options_view.dart'; import 'package:stackwallet/pages/settings_views/global_settings_view/syncing_preferences_views/syncing_preferences_view.dart'; import 'package:stackwallet/pages/settings_views/global_settings_view/syncing_preferences_views/wallet_syncing_options_view.dart'; +import 'package:stackwallet/pages/settings_views/global_settings_view/tor_settings/tor_settings_view.dart'; import 'package:stackwallet/pages/settings_views/wallet_settings_view/wallet_backup_views/wallet_backup_view.dart'; import 'package:stackwallet/pages/settings_views/wallet_settings_view/wallet_network_settings_view/wallet_network_settings_view.dart'; import 'package:stackwallet/pages/settings_views/wallet_settings_view/wallet_settings_view.dart'; @@ -654,6 +655,12 @@ class RouteGenerator { builder: (_) => const LanguageSettingsView(), settings: RouteSettings(name: settings.name)); + case TorSettingsView.routeName: + return getRoute( + shouldUseMaterialRoute: useMaterialPageRoute, + builder: (_) => const TorSettingsView(), + settings: RouteSettings(name: settings.name)); + case AboutView.routeName: return getRoute( shouldUseMaterialRoute: useMaterialPageRoute, diff --git a/lib/utilities/assets.dart b/lib/utilities/assets.dart index d1d7a55d8..2e0bd0949 100644 --- a/lib/utilities/assets.dart +++ b/lib/utilities/assets.dart @@ -92,6 +92,9 @@ class _SVG { final coinControl = const _COIN_CONTROL(); + String get torConnected => "assets/svg/tor-synced.svg"; + String get torConnecting => "assets/svg/tor-syncing.svg"; + String get tor => "assets/svg/tor.svg"; String get monkey => "assets/svg/monkey.svg"; String get circleSliders => "assets/svg/configuration.svg"; String get circlePlus => "assets/svg/plus-circle.svg"; diff --git a/lib/utilities/prefs.dart b/lib/utilities/prefs.dart index 7c306bfe5..3168d75f2 100644 --- a/lib/utilities/prefs.dart +++ b/lib/utilities/prefs.dart @@ -42,6 +42,7 @@ class Prefs extends ChangeNotifier { _lastUnlocked = await _getLastUnlocked(); _lastUnlockedTimeout = await _getLastUnlockedTimeout(); _showTestNetCoins = await _getShowTestNetCoins(); + _torKillswitch = await _getTorKillswitch(); _isAutoBackupEnabled = await _getIsAutoBackupEnabled(); _autoBackupLocation = await _getAutoBackupLocation(); _backupFrequencyType = await _getBackupFrequencyType(); @@ -393,6 +394,27 @@ class Prefs extends ChangeNotifier { 0; } + // tor + + bool _torKillswitch = false; + + bool get torKillswitch => _torKillswitch; + + set torKillswitch(bool torKillswitch) { + if (_torKillswitch != showTestNetCoins) { + DB.instance.put( + boxName: DB.boxNamePrefs, key: "torKillswitch", value: torKillswitch); + _torKillswitch = torKillswitch; + notifyListeners(); + } + } + + Future _getTorKillswitch() async { + return await DB.instance.get( + boxName: DB.boxNamePrefs, key: "torKillswitch") as bool? ?? + false; + } + // show testnet coins bool _showTestNetCoins = false; diff --git a/pubspec.yaml b/pubspec.yaml index dbb5ecfe5..7d69fdab6 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -342,6 +342,9 @@ flutter: - assets/svg/send.svg - assets/svg/ordinal.svg - assets/svg/monkey.svg + - assets/svg/tor.svg + - assets/svg/tor-syncing.svg + - assets/svg/tor-synced.svg # coin control icons - assets/svg/coin_control/ From 7072c919ae40dd76392cd0bcae82fdceea48909f Mon Sep 17 00:00:00 2001 From: ryleedavis Date: Tue, 5 Sep 2023 13:11:08 -0600 Subject: [PATCH 02/13] WIP: add tor to home page --- lib/pages/home_view/home_view.dart | 69 +++++++++++++++++++ .../tor_sync_status_changed_event.dart | 22 ++++++ 2 files changed, 91 insertions(+) create mode 100644 lib/pages/home_view/sub_widgets/tor_sync_status_changed_event.dart 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); + } +} From fcf98d8096586c69fb3cf28bc10b944096bdd6ba Mon Sep 17 00:00:00 2001 From: ryleedavis Date: Tue, 5 Sep 2023 13:39:57 -0600 Subject: [PATCH 03/13] WIP: add tor settings to desktop --- .../settings/desktop_settings_view.dart | 6 ++++++ lib/pages_desktop_specific/settings/settings_menu.dart | 1 + 2 files changed, 7 insertions(+) diff --git a/lib/pages_desktop_specific/settings/desktop_settings_view.dart b/lib/pages_desktop_specific/settings/desktop_settings_view.dart index 2a8c180f9..e1920aa0b 100644 --- a/lib/pages_desktop_specific/settings/desktop_settings_view.dart +++ b/lib/pages_desktop_specific/settings/desktop_settings_view.dart @@ -10,6 +10,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:stackwallet/pages/settings_views/global_settings_view/tor_settings/tor_settings_view.dart'; import 'package:stackwallet/pages_desktop_specific/settings/settings_menu.dart'; import 'package:stackwallet/pages_desktop_specific/settings/settings_menu/advanced_settings/advanced_settings.dart'; import 'package:stackwallet/pages_desktop_specific/settings/settings_menu/appearance_settings/appearance_settings.dart'; @@ -56,6 +57,11 @@ class _DesktopSettingsViewState extends ConsumerState { key: Key("settingsLanguageDesktopKey"), onGenerateRoute: RouteGenerator.generateRoute, initialRoute: LanguageOptionSettings.routeName, + ), + const Navigator( + key: Key("settingsTorDesktopKey"), + onGenerateRoute: RouteGenerator.generateRoute, + initialRoute: TorSettingsView.routeName, ), //language const Navigator( key: Key("settingsNodesDesktopKey"), diff --git a/lib/pages_desktop_specific/settings/settings_menu.dart b/lib/pages_desktop_specific/settings/settings_menu.dart index 4f3175a72..ba2c21781 100644 --- a/lib/pages_desktop_specific/settings/settings_menu.dart +++ b/lib/pages_desktop_specific/settings/settings_menu.dart @@ -32,6 +32,7 @@ class _SettingsMenuState extends ConsumerState { "Security", "Currency", "Language", + "Tor settings", "Nodes", "Syncing preferences", "Appearance", From 1dea6cdb7da09e797a42696b539e6d9e51f2053d Mon Sep 17 00:00:00 2001 From: ryleedavis Date: Tue, 5 Sep 2023 16:26:52 -0600 Subject: [PATCH 04/13] rough ui for desktop tor settings + svgs for tor settings --- assets/svg/connected-button.svg | 4 + assets/svg/connecting-button.svg | 4 + assets/svg/disconnected-button.svg | 4 + assets/svg/tor-circle.svg | 5 + .../tor_settings/tor_settings_view.dart | 2 +- .../settings/desktop_settings_view.dart | 6 +- .../tor_settings/tor_settings.dart | 181 ++++++++++++++++++ lib/route_generator.dart | 7 + lib/utilities/assets.dart | 6 +- pubspec.yaml | 6 +- 10 files changed, 217 insertions(+), 8 deletions(-) create mode 100644 assets/svg/connected-button.svg create mode 100644 assets/svg/connecting-button.svg create mode 100644 assets/svg/disconnected-button.svg create mode 100644 assets/svg/tor-circle.svg create mode 100644 lib/pages_desktop_specific/settings/settings_menu/tor_settings/tor_settings.dart diff --git a/assets/svg/connected-button.svg b/assets/svg/connected-button.svg new file mode 100644 index 000000000..96a9970c0 --- /dev/null +++ b/assets/svg/connected-button.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/svg/connecting-button.svg b/assets/svg/connecting-button.svg new file mode 100644 index 000000000..1bc6e953b --- /dev/null +++ b/assets/svg/connecting-button.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/svg/disconnected-button.svg b/assets/svg/disconnected-button.svg new file mode 100644 index 000000000..03a8067d7 --- /dev/null +++ b/assets/svg/disconnected-button.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/svg/tor-circle.svg b/assets/svg/tor-circle.svg new file mode 100644 index 000000000..8268a00f6 --- /dev/null +++ b/assets/svg/tor-circle.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/lib/pages/settings_views/global_settings_view/tor_settings/tor_settings_view.dart b/lib/pages/settings_views/global_settings_view/tor_settings/tor_settings_view.dart index d97cb34e2..406f7ebf4 100644 --- a/lib/pages/settings_views/global_settings_view/tor_settings/tor_settings_view.dart +++ b/lib/pages/settings_views/global_settings_view/tor_settings/tor_settings_view.dart @@ -61,7 +61,7 @@ class _TorSettingsViewState extends ConsumerState { }, ), title: Text( - "Tor Settings", + "Tor settings", style: STextStyles.navBarTitle(context), ), actions: [ diff --git a/lib/pages_desktop_specific/settings/desktop_settings_view.dart b/lib/pages_desktop_specific/settings/desktop_settings_view.dart index e1920aa0b..6a785fc8a 100644 --- a/lib/pages_desktop_specific/settings/desktop_settings_view.dart +++ b/lib/pages_desktop_specific/settings/desktop_settings_view.dart @@ -10,7 +10,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:stackwallet/pages/settings_views/global_settings_view/tor_settings/tor_settings_view.dart'; import 'package:stackwallet/pages_desktop_specific/settings/settings_menu.dart'; import 'package:stackwallet/pages_desktop_specific/settings/settings_menu/advanced_settings/advanced_settings.dart'; import 'package:stackwallet/pages_desktop_specific/settings/settings_menu/appearance_settings/appearance_settings.dart'; @@ -20,6 +19,7 @@ import 'package:stackwallet/pages_desktop_specific/settings/settings_menu/langua import 'package:stackwallet/pages_desktop_specific/settings/settings_menu/nodes_settings.dart'; import 'package:stackwallet/pages_desktop_specific/settings/settings_menu/security_settings.dart'; import 'package:stackwallet/pages_desktop_specific/settings/settings_menu/syncing_preferences_settings.dart'; +import 'package:stackwallet/pages_desktop_specific/settings/settings_menu/tor_settings/tor_settings.dart'; import 'package:stackwallet/route_generator.dart'; import 'package:stackwallet/themes/stack_colors.dart'; import 'package:stackwallet/utilities/text_styles.dart'; @@ -61,8 +61,8 @@ class _DesktopSettingsViewState extends ConsumerState { const Navigator( key: Key("settingsTorDesktopKey"), onGenerateRoute: RouteGenerator.generateRoute, - initialRoute: TorSettingsView.routeName, - ), //language + initialRoute: TorSettings.routeName, + ), //tor const Navigator( key: Key("settingsNodesDesktopKey"), onGenerateRoute: RouteGenerator.generateRoute, diff --git a/lib/pages_desktop_specific/settings/settings_menu/tor_settings/tor_settings.dart b/lib/pages_desktop_specific/settings/settings_menu/tor_settings/tor_settings.dart new file mode 100644 index 000000000..6a8a8e8c8 --- /dev/null +++ b/lib/pages_desktop_specific/settings/settings_menu/tor_settings/tor_settings.dart @@ -0,0 +1,181 @@ +/* + * 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:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:stackwallet/utilities/assets.dart'; +import 'package:stackwallet/utilities/text_styles.dart'; +import 'package:stackwallet/utilities/util.dart'; +import 'package:stackwallet/widgets/desktop/secondary_button.dart'; +import 'package:stackwallet/widgets/rounded_white_container.dart'; + +import '../../../../providers/global/prefs_provider.dart'; +import '../../../../themes/stack_colors.dart'; +import '../../../../widgets/custom_buttons/draggable_switch_button.dart'; + +class TorSettings extends ConsumerStatefulWidget { + const TorSettings({Key? key}) : super(key: key); + + static const String routeName = "/torDesktopSettings"; + + @override + ConsumerState createState() => _TorSettingsState(); +} + +class _TorSettingsState extends ConsumerState { + @override + void initState() { + super.initState(); + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final isDesktop = Util.isDesktop; + + return Column( + children: [ + Padding( + padding: const EdgeInsets.only( + right: 30, + ), + child: RoundedWhiteContainer( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Padding( + padding: const EdgeInsets.all(8.0), + child: SvgPicture.asset( + Assets.svg.circleTor, + width: 48, + height: 48, + ), + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: SvgPicture.asset( + Assets.svg.disconnectedButton, + width: 48, + height: 48, + ), + ), + ], + ), + Padding( + padding: const EdgeInsets.all(10), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + "Tor settings", + style: STextStyles.desktopTextSmall(context), + ), + RichText( + textAlign: TextAlign.start, + text: TextSpan( + children: [ + TextSpan( + text: + "\nConnect to the Tor Network with one click.", + style: STextStyles.desktopTextExtraExtraSmall( + context), + ), + TextSpan( + text: "\tWhat is Tor?", + style: STextStyles.richLink(context).copyWith( + fontSize: 14, + ), + recognizer: TapGestureRecognizer()..onTap = () {}, + ), + ], + ), + ), + ], + ), + ), + const SizedBox( + height: 20, + ), + SecondaryButton( + label: "Disconnect from Tor", + width: 200, + buttonHeight: ButtonHeight.m, + onPressed: () {}, + ), + const SizedBox( + height: 40, + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + RichText( + textAlign: TextAlign.start, + text: TextSpan( + children: [ + TextSpan( + text: "Tor killswitch", + style: STextStyles.desktopTextExtraExtraSmall( + context) + .copyWith( + color: Theme.of(context) + .extension()! + .accentColorDark), + ), + TextSpan( + text: "\nWhat is Tor killswitch?", + style: STextStyles.richLink(context).copyWith( + fontSize: 14, + ), + recognizer: TapGestureRecognizer() + ..onTap = () {}, + ), + ], + ), + ), + ], + ), + SizedBox( + height: 20, + width: 40, + child: DraggableSwitchButton( + isOn: ref.watch( + prefsChangeNotifierProvider + .select((value) => value.torKillswitch), + ), + onValueChanged: (newValue) { + ref.read(prefsChangeNotifierProvider).torKillswitch = + newValue; + }, + ), + ), + ], + ), + const SizedBox( + height: 10, + ), + ], + ), + ), + ), + ], + ); + } +} diff --git a/lib/route_generator.dart b/lib/route_generator.dart index 4f18b32d4..38604bc33 100644 --- a/lib/route_generator.dart +++ b/lib/route_generator.dart @@ -167,6 +167,7 @@ import 'package:stackwallet/pages_desktop_specific/settings/settings_menu/langua import 'package:stackwallet/pages_desktop_specific/settings/settings_menu/nodes_settings.dart'; import 'package:stackwallet/pages_desktop_specific/settings/settings_menu/security_settings.dart'; import 'package:stackwallet/pages_desktop_specific/settings/settings_menu/syncing_preferences_settings.dart'; +import 'package:stackwallet/pages_desktop_specific/settings/settings_menu/tor_settings/tor_settings.dart'; import 'package:stackwallet/services/coins/manager.dart'; import 'package:stackwallet/services/event_bus/events/global/node_connection_status_changed_event.dart'; import 'package:stackwallet/services/event_bus/events/global/wallet_sync_status_changed_event.dart'; @@ -661,6 +662,12 @@ class RouteGenerator { builder: (_) => const TorSettingsView(), settings: RouteSettings(name: settings.name)); + case TorSettings.routeName: + return getRoute( + shouldUseMaterialRoute: useMaterialPageRoute, + builder: (_) => const TorSettings(), + settings: RouteSettings(name: settings.name)); + case AboutView.routeName: return getRoute( shouldUseMaterialRoute: useMaterialPageRoute, diff --git a/lib/utilities/assets.dart b/lib/utilities/assets.dart index 2e0bd0949..9880e12c5 100644 --- a/lib/utilities/assets.dart +++ b/lib/utilities/assets.dart @@ -92,8 +92,10 @@ class _SVG { final coinControl = const _COIN_CONTROL(); - String get torConnected => "assets/svg/tor-synced.svg"; - String get torConnecting => "assets/svg/tor-syncing.svg"; + String get connectedButton => "assets/svg/connected-button.svg"; + String get connectingButton => "assets/svg/connecting-button.svg"; + String get disconnectedButton => "assets/svg/disconnected-button.svg"; + String get circleTor => "assets/svg/tor-circle.svg"; String get tor => "assets/svg/tor.svg"; String get monkey => "assets/svg/monkey.svg"; String get circleSliders => "assets/svg/configuration.svg"; diff --git a/pubspec.yaml b/pubspec.yaml index 7d69fdab6..0a52e183c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -343,8 +343,10 @@ flutter: - assets/svg/ordinal.svg - assets/svg/monkey.svg - assets/svg/tor.svg - - assets/svg/tor-syncing.svg - - assets/svg/tor-synced.svg + - assets/svg/tor-circle.svg + - assets/svg/connected-button.svg + - assets/svg/connecting-button.svg + - assets/svg/disconnected-button.svg # coin control icons - assets/svg/coin_control/ From 2fc116707b261cbbe0c2b5bb86aca58290c575eb Mon Sep 17 00:00:00 2001 From: ryleedavis Date: Tue, 5 Sep 2023 16:34:53 -0600 Subject: [PATCH 05/13] adjust padding --- .../tor_settings/tor_settings.dart | 109 ++++++++++-------- 1 file changed, 60 insertions(+), 49 deletions(-) diff --git a/lib/pages_desktop_specific/settings/settings_menu/tor_settings/tor_settings.dart b/lib/pages_desktop_specific/settings/settings_menu/tor_settings/tor_settings.dart index 6a8a8e8c8..3a1e4dd81 100644 --- a/lib/pages_desktop_specific/settings/settings_menu/tor_settings/tor_settings.dart +++ b/lib/pages_desktop_specific/settings/settings_menu/tor_settings/tor_settings.dart @@ -46,6 +46,7 @@ class _TorSettingsState extends ConsumerState { Widget build(BuildContext context) { final isDesktop = Util.isDesktop; + /// todo: redo the padding return Column( children: [ Padding( @@ -110,63 +111,73 @@ class _TorSettingsState extends ConsumerState { ), ), const SizedBox( - height: 20, + height: 10, ), - SecondaryButton( - label: "Disconnect from Tor", - width: 200, - buttonHeight: ButtonHeight.m, - onPressed: () {}, + Padding( + padding: const EdgeInsets.all(10.0), + child: SecondaryButton( + label: "Disconnect from Tor", + width: 200, + buttonHeight: ButtonHeight.m, + onPressed: () {}, + ), ), const SizedBox( - height: 40, + height: 30, ), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( - children: [ - RichText( - textAlign: TextAlign.start, - text: TextSpan( - children: [ - TextSpan( - text: "Tor killswitch", - style: STextStyles.desktopTextExtraExtraSmall( - context) - .copyWith( - color: Theme.of(context) - .extension()! - .accentColorDark), - ), - TextSpan( - text: "\nWhat is Tor killswitch?", - style: STextStyles.richLink(context).copyWith( - fontSize: 14, + Padding( + padding: const EdgeInsets.all(10.0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + RichText( + textAlign: TextAlign.start, + text: TextSpan( + children: [ + TextSpan( + text: "Tor killswitch", + style: STextStyles.desktopTextExtraExtraSmall( + context) + .copyWith( + color: Theme.of(context) + .extension()! + .accentColorDark), ), - recognizer: TapGestureRecognizer() - ..onTap = () {}, - ), - ], + TextSpan( + text: "\nWhat is Tor killswitch?", + style: STextStyles.richLink(context).copyWith( + fontSize: 14, + ), + recognizer: TapGestureRecognizer() + ..onTap = () {}, + ), + ], + ), + ), + ], + ), + Padding( + padding: const EdgeInsets.only(right: 8.0), + child: SizedBox( + height: 20, + width: 40, + child: DraggableSwitchButton( + isOn: ref.watch( + prefsChangeNotifierProvider + .select((value) => value.torKillswitch), + ), + onValueChanged: (newValue) { + ref + .read(prefsChangeNotifierProvider) + .torKillswitch = newValue; + }, ), ), - ], - ), - SizedBox( - height: 20, - width: 40, - child: DraggableSwitchButton( - isOn: ref.watch( - prefsChangeNotifierProvider - .select((value) => value.torKillswitch), - ), - onValueChanged: (newValue) { - ref.read(prefsChangeNotifierProvider).torKillswitch = - newValue; - }, ), - ), - ], + ], + ), ), const SizedBox( height: 10, From 1a20029c18710267d213991314b3f28a58c3639b Mon Sep 17 00:00:00 2001 From: ryleedavis Date: Tue, 5 Sep 2023 16:55:54 -0600 Subject: [PATCH 06/13] add dialogs to tor settings --- .../tor_settings/tor_settings.dart | 126 +++++++++++++++++- 1 file changed, 124 insertions(+), 2 deletions(-) diff --git a/lib/pages_desktop_specific/settings/settings_menu/tor_settings/tor_settings.dart b/lib/pages_desktop_specific/settings/settings_menu/tor_settings/tor_settings.dart index 3a1e4dd81..d4c0b3a53 100644 --- a/lib/pages_desktop_specific/settings/settings_menu/tor_settings/tor_settings.dart +++ b/lib/pages_desktop_specific/settings/settings_menu/tor_settings/tor_settings.dart @@ -15,6 +15,8 @@ import 'package:flutter_svg/flutter_svg.dart'; import 'package:stackwallet/utilities/assets.dart'; import 'package:stackwallet/utilities/text_styles.dart'; import 'package:stackwallet/utilities/util.dart'; +import 'package:stackwallet/widgets/desktop/desktop_dialog.dart'; +import 'package:stackwallet/widgets/desktop/desktop_dialog_close_button.dart'; import 'package:stackwallet/widgets/desktop/secondary_button.dart'; import 'package:stackwallet/widgets/rounded_white_container.dart'; @@ -102,7 +104,66 @@ class _TorSettingsState extends ConsumerState { style: STextStyles.richLink(context).copyWith( fontSize: 14, ), - recognizer: TapGestureRecognizer()..onTap = () {}, + recognizer: TapGestureRecognizer() + ..onTap = () { + showDialog( + context: context, + useSafeArea: false, + barrierDismissible: true, + builder: (context) { + return DesktopDialog( + maxWidth: 580, + maxHeight: double.infinity, + child: Column( + children: [ + Row( + mainAxisAlignment: + MainAxisAlignment.end, + children: [ + DesktopDialogCloseButton( + onPressedOverride: () => + Navigator.of(context) + .pop(true), + ), + ], + ), + Padding( + padding: + const EdgeInsets.all(20), + child: Column( + mainAxisSize: + MainAxisSize.max, + children: [ + Text( + "What is Tor?", + style: + STextStyles.desktopH2( + context), + ), + const SizedBox( + height: 20, + ), + Text( + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " + "Sed sit amet nulla accumsan, ornare felis pellentesque, auctor nulla.", + style: STextStyles + .desktopTextMedium( + context) + .copyWith( + color: Theme.of(context) + .extension< + StackColors>()! + .textDark3, + ), + ), + ], + ), + ), + ], + ), + ); + }); + }, ), ], ), @@ -151,7 +212,68 @@ class _TorSettingsState extends ConsumerState { fontSize: 14, ), recognizer: TapGestureRecognizer() - ..onTap = () {}, + ..onTap = () { + showDialog( + context: context, + useSafeArea: false, + barrierDismissible: true, + builder: (context) { + return DesktopDialog( + maxWidth: 580, + maxHeight: double.infinity, + child: Column( + children: [ + Row( + mainAxisAlignment: + MainAxisAlignment.end, + children: [ + DesktopDialogCloseButton( + onPressedOverride: () => + Navigator.of( + context) + .pop(true), + ), + ], + ), + Padding( + padding: + const EdgeInsets.all( + 20), + child: Column( + mainAxisSize: + MainAxisSize.max, + children: [ + Text( + "What is Tor killswitch?", + style: STextStyles + .desktopH2( + context), + ), + const SizedBox( + height: 20, + ), + Text( + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " + "Sed sit amet nulla accumsan, ornare felis pellentesque, auctor nulla.", + style: STextStyles + .desktopTextMedium( + context) + .copyWith( + color: Theme.of( + context) + .extension< + StackColors>()! + .textDark3, + ), + ), + ], + ), + ), + ], + ), + ); + }); + }, ), ], ), From d560a3094195619ee3d66a71804bb51b2ccc0de5 Mon Sep 17 00:00:00 2001 From: ryleedavis Date: Tue, 5 Sep 2023 16:56:56 -0600 Subject: [PATCH 07/13] add dialogs to tor settings --- .../tor_settings/tor_settings_view.dart | 34 +++++++++++++++---- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/lib/pages/settings_views/global_settings_view/tor_settings/tor_settings_view.dart b/lib/pages/settings_views/global_settings_view/tor_settings/tor_settings_view.dart index 406f7ebf4..43efc48d5 100644 --- a/lib/pages/settings_views/global_settings_view/tor_settings/tor_settings_view.dart +++ b/lib/pages/settings_views/global_settings_view/tor_settings/tor_settings_view.dart @@ -159,13 +159,33 @@ class _TorSettingsViewState extends ConsumerState { style: STextStyles.titleBold12(context), ), const SizedBox(width: 8), - SvgPicture.asset( - Assets.svg.circleInfo, - height: 16, - width: 16, - color: Theme.of(context) - .extension()! - .infoItemLabel, + GestureDetector( + onTap: () { + showDialog( + context: context, + useSafeArea: false, + barrierDismissible: true, + builder: (context) { + return const StackDialog( + title: "What is Tor killswitch?", + message: + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " + "Sed sit amet nulla accumsan, ornare felis pellentesque, auctor nulla.", + rightButton: SecondaryButton( + label: "Close", + ), + ); + }, + ); + }, + child: SvgPicture.asset( + Assets.svg.circleInfo, + height: 16, + width: 16, + color: Theme.of(context) + .extension()! + .infoItemLabel, + ), ), ], ), From c3aaf0574b275eff804c2bbd17a2627036ea7354 Mon Sep 17 00:00:00 2001 From: ryleedavis Date: Wed, 6 Sep 2023 13:43:09 -0600 Subject: [PATCH 08/13] added information to tor dialogs --- .../tor_settings/tor_settings_view.dart | 10 ++++++---- .../settings_menu/tor_settings/tor_settings.dart | 10 ++++++---- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/lib/pages/settings_views/global_settings_view/tor_settings/tor_settings_view.dart b/lib/pages/settings_views/global_settings_view/tor_settings/tor_settings_view.dart index 43efc48d5..29a53ba7e 100644 --- a/lib/pages/settings_views/global_settings_view/tor_settings/tor_settings_view.dart +++ b/lib/pages/settings_views/global_settings_view/tor_settings/tor_settings_view.dart @@ -80,8 +80,9 @@ class _TorSettingsViewState extends ConsumerState { return const StackDialog( title: "What is Tor?", message: - "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " - "Sed sit amet nulla accumsan, ornare felis pellentesque, auctor nulla.", + "Short for \"The Onion Router\", is an open-source software that enables internet communication" + " to remain anonymous by routing internet traffic through a series of layered nodes," + " to obscure the origin and destination of data.", rightButton: SecondaryButton( label: "Close", ), @@ -169,8 +170,9 @@ class _TorSettingsViewState extends ConsumerState { return const StackDialog( title: "What is Tor killswitch?", message: - "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " - "Sed sit amet nulla accumsan, ornare felis pellentesque, auctor nulla.", + "A security feature that protects your information from accidental exposure by" + " disconnecting your device from the Tor network if your virtual private network (VPN)" + " connection is disrupted or compromised.", rightButton: SecondaryButton( label: "Close", ), diff --git a/lib/pages_desktop_specific/settings/settings_menu/tor_settings/tor_settings.dart b/lib/pages_desktop_specific/settings/settings_menu/tor_settings/tor_settings.dart index d4c0b3a53..e8d4b3f6a 100644 --- a/lib/pages_desktop_specific/settings/settings_menu/tor_settings/tor_settings.dart +++ b/lib/pages_desktop_specific/settings/settings_menu/tor_settings/tor_settings.dart @@ -144,8 +144,9 @@ class _TorSettingsState extends ConsumerState { height: 20, ), Text( - "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " - "Sed sit amet nulla accumsan, ornare felis pellentesque, auctor nulla.", + "Short for \"The Onion Router\", is an open-source software that enables internet communication" + " to remain anonymous by routing internet traffic through a series of layered nodes," + " to obscure the origin and destination of data.", style: STextStyles .desktopTextMedium( context) @@ -253,8 +254,9 @@ class _TorSettingsState extends ConsumerState { height: 20, ), Text( - "Lorem ipsum dolor sit amet, consectetur adipiscing elit. " - "Sed sit amet nulla accumsan, ornare felis pellentesque, auctor nulla.", + "A security feature that protects your information from accidental exposure by" + " disconnecting your device from the Tor network if your virtual private network (VPN)" + " connection is disrupted or compromised.", style: STextStyles .desktopTextMedium( context) From 6377b73deb2b866afe30c2ed459888f6ac3aaba0 Mon Sep 17 00:00:00 2001 From: ryleedavis Date: Wed, 6 Sep 2023 13:43:55 -0600 Subject: [PATCH 09/13] add tor network status to desktop home --- lib/pages/home_view/home_view.dart | 4 +- lib/pages_desktop_specific/desktop_menu.dart | 82 +++++++++++++++++++- 2 files changed, 83 insertions(+), 3 deletions(-) diff --git a/lib/pages/home_view/home_view.dart b/lib/pages/home_view/home_view.dart index be1597adb..ebd53abdb 100644 --- a/lib/pages/home_view/home_view.dart +++ b/lib/pages/home_view/home_view.dart @@ -122,7 +122,7 @@ class _HomeViewState extends ConsumerState { case TorSyncStatus.unableToSync: return SvgPicture.asset( Assets.svg.tor, - color: Theme.of(context).extension()!.accentColorRed, + color: Theme.of(context).extension()!.infoItemLabel, width: 20, height: 20, ); @@ -261,7 +261,7 @@ class _HomeViewState extends ConsumerState { color: Theme.of(context) .extension()! .backgroundAppBar, - icon: _buildTorIcon(TorSyncStatus.syncing), + icon: _buildTorIcon(TorSyncStatus.unableToSync), onPressed: () { Navigator.of(context) .pushNamed(TorSettingsView.routeName); diff --git a/lib/pages_desktop_specific/desktop_menu.dart b/lib/pages_desktop_specific/desktop_menu.dart index 1a0a1f09f..f89fd3aef 100644 --- a/lib/pages_desktop_specific/desktop_menu.dart +++ b/lib/pages_desktop_specific/desktop_menu.dart @@ -14,6 +14,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_svg/flutter_svg.dart'; +import 'package:stackwallet/pages/home_view/sub_widgets/tor_sync_status_changed_event.dart'; import 'package:stackwallet/pages_desktop_specific/desktop_menu_item.dart'; import 'package:stackwallet/providers/desktop/current_desktop_menu_item.dart'; import 'package:stackwallet/themes/stack_colors.dart'; @@ -57,6 +58,70 @@ class _DesktopMenuState extends ConsumerState { // final _buyDataLoadingService = BuyDataLoadingService(); + Widget _buildTorIcon(TorSyncStatus status) { + switch (status) { + case TorSyncStatus.unableToSync: + return Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SvgPicture.asset( + Assets.svg.tor, + color: Theme.of(context).extension()!.infoItemLabel, + width: 20, + height: 20, + ), + Text( + "\tDisconnected", + style: STextStyles.smallMed12(context).copyWith( + color: Theme.of(context) + .extension()! + .infoItemLabel), + ) + ], + ); + case TorSyncStatus.synced: + return Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SvgPicture.asset( + Assets.svg.tor, + color: + Theme.of(context).extension()!.accentColorGreen, + width: 20, + height: 20, + ), + Text( + "\tConnected", + style: STextStyles.smallMed12(context).copyWith( + color: Theme.of(context) + .extension()! + .accentColorGreen), + ) + ], + ); + case TorSyncStatus.syncing: + return Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SvgPicture.asset( + Assets.svg.tor, + color: + Theme.of(context).extension()!.accentColorYellow, + width: 20, + height: 20, + ), + Text( + "\tConnecting", + style: STextStyles.smallMed12(context).copyWith( + color: Theme.of(context) + .extension()! + .accentColorYellow), + ) + ], + ); + } + } + void updateSelectedMenuItem(DesktopMenuItemId idKey) { widget.onSelectionWillChange?.call(idKey); @@ -140,7 +205,22 @@ class _DesktopMenuState extends ConsumerState { ), ), const SizedBox( - height: 60, + height: 5, + ), + MouseRegion( + cursor: SystemMouseCursors.click, + child: GestureDetector( + onTap: () { + // ref.watch(selectedSettingsMenuItemStateProvider.state).state = + // 4; + // ref.watch(selectedSettingsMenuItemStateProvider.state).state = + // 5; + // Navigator.of(context).pushNamed(DesktopHomeView.routeName); + }, + child: _buildTorIcon(TorSyncStatus.unableToSync)), + ), + const SizedBox( + height: 40, ), Expanded( child: AnimatedContainer( From 7289de016060011d699eb094a3b6e89d6a3f125a Mon Sep 17 00:00:00 2001 From: ryleedavis Date: Wed, 6 Sep 2023 14:26:04 -0600 Subject: [PATCH 10/13] minor ui fixes --- lib/pages/home_view/home_view.dart | 2 +- .../tor_settings/tor_settings_view.dart | 33 ++++++++++++++++--- lib/pages_desktop_specific/desktop_menu.dart | 4 +-- 3 files changed, 31 insertions(+), 8 deletions(-) diff --git a/lib/pages/home_view/home_view.dart b/lib/pages/home_view/home_view.dart index ebd53abdb..759c7760d 100644 --- a/lib/pages/home_view/home_view.dart +++ b/lib/pages/home_view/home_view.dart @@ -122,7 +122,7 @@ class _HomeViewState extends ConsumerState { case TorSyncStatus.unableToSync: return SvgPicture.asset( Assets.svg.tor, - color: Theme.of(context).extension()!.infoItemLabel, + color: Theme.of(context).extension()!.textSubtitle3, width: 20, height: 20, ); diff --git a/lib/pages/settings_views/global_settings_view/tor_settings/tor_settings_view.dart b/lib/pages/settings_views/global_settings_view/tor_settings/tor_settings_view.dart index 29a53ba7e..366aff80a 100644 --- a/lib/pages/settings_views/global_settings_view/tor_settings/tor_settings_view.dart +++ b/lib/pages/settings_views/global_settings_view/tor_settings/tor_settings_view.dart @@ -11,6 +11,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_svg/flutter_svg.dart'; +import 'package:stackwallet/pages/home_view/sub_widgets/tor_sync_status_changed_event.dart'; import 'package:stackwallet/providers/global/prefs_provider.dart'; import 'package:stackwallet/themes/stack_colors.dart'; import 'package:stackwallet/utilities/assets.dart'; @@ -34,6 +35,32 @@ class TorSettingsView extends ConsumerStatefulWidget { } class _TorSettingsViewState extends ConsumerState { + Widget _buildTorIcon(TorSyncStatus status) { + switch (status) { + case TorSyncStatus.unableToSync: + return SvgPicture.asset( + Assets.svg.tor, + color: Theme.of(context).extension()!.textSubtitle3, + width: 200, + height: 200, + ); + case TorSyncStatus.synced: + return SvgPicture.asset( + Assets.svg.tor, + color: Theme.of(context).extension()!.accentColorGreen, + width: 200, + height: 200, + ); + case TorSyncStatus.syncing: + return SvgPicture.asset( + Assets.svg.tor, + color: Theme.of(context).extension()!.accentColorYellow, + width: 200, + height: 200, + ); + } + } + @override void initState() { super.initState(); @@ -104,11 +131,7 @@ class _TorSettingsViewState extends ConsumerState { children: [ Padding( padding: const EdgeInsets.all(10.0), - child: SvgPicture.asset( - Assets.svg.tor, - height: 200, - width: 200, - ), + child: _buildTorIcon(TorSyncStatus.unableToSync), ), ], ), diff --git a/lib/pages_desktop_specific/desktop_menu.dart b/lib/pages_desktop_specific/desktop_menu.dart index f89fd3aef..6e0b38c65 100644 --- a/lib/pages_desktop_specific/desktop_menu.dart +++ b/lib/pages_desktop_specific/desktop_menu.dart @@ -66,7 +66,7 @@ class _DesktopMenuState extends ConsumerState { children: [ SvgPicture.asset( Assets.svg.tor, - color: Theme.of(context).extension()!.infoItemLabel, + color: Theme.of(context).extension()!.textSubtitle3, width: 20, height: 20, ), @@ -75,7 +75,7 @@ class _DesktopMenuState extends ConsumerState { style: STextStyles.smallMed12(context).copyWith( color: Theme.of(context) .extension()! - .infoItemLabel), + .textSubtitle3), ) ], ); From b5fcea18f6abf2d783669b908fc0b14eb81b8b6a Mon Sep 17 00:00:00 2001 From: ryleedavis Date: Wed, 6 Sep 2023 16:39:45 -0600 Subject: [PATCH 11/13] tor status text --- .../tor_settings/tor_settings_view.dart | 33 ++++++++++++++++--- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/lib/pages/settings_views/global_settings_view/tor_settings/tor_settings_view.dart b/lib/pages/settings_views/global_settings_view/tor_settings/tor_settings_view.dart index 366aff80a..5fd8128b5 100644 --- a/lib/pages/settings_views/global_settings_view/tor_settings/tor_settings_view.dart +++ b/lib/pages/settings_views/global_settings_view/tor_settings/tor_settings_view.dart @@ -61,6 +61,32 @@ class _TorSettingsViewState extends ConsumerState { } } + Widget _buildTorStatus(TorSyncStatus status) { + switch (status) { + case TorSyncStatus.unableToSync: + return Text( + "Disconnected", + style: STextStyles.itemSubtitle(context).copyWith( + color: Theme.of(context).extension()!.textSubtitle3), + ); + case TorSyncStatus.synced: + return Text( + "Connected", + style: STextStyles.itemSubtitle(context).copyWith( + color: + Theme.of(context).extension()!.accentColorGreen), + ); + case TorSyncStatus.syncing: + return Text( + "Connecting", + style: STextStyles.itemSubtitle(context).copyWith( + color: Theme.of(context) + .extension()! + .accentColorYellow), + ); + } + } + @override void initState() { super.initState(); @@ -131,7 +157,7 @@ class _TorSettingsViewState extends ConsumerState { children: [ Padding( padding: const EdgeInsets.all(10.0), - child: _buildTorIcon(TorSyncStatus.unableToSync), + child: _buildTorIcon(TorSyncStatus.syncing), ), ], ), @@ -148,10 +174,7 @@ class _TorSettingsViewState extends ConsumerState { style: STextStyles.titleBold12(context), ), const Spacer(), - Text( - "Tor network status", - style: STextStyles.itemSubtitle(context), - ), + _buildTorStatus(TorSyncStatus.syncing), ], ), ), From 11b7456855b00dc898c2a2126bd320a23c337cf0 Mon Sep 17 00:00:00 2001 From: ryleedavis Date: Wed, 6 Sep 2023 16:49:47 -0600 Subject: [PATCH 12/13] fixed tor status text --- .../tor_settings/tor_settings_view.dart | 68 ++++++++++++++----- 1 file changed, 51 insertions(+), 17 deletions(-) diff --git a/lib/pages/settings_views/global_settings_view/tor_settings/tor_settings_view.dart b/lib/pages/settings_views/global_settings_view/tor_settings/tor_settings_view.dart index 5fd8128b5..8304eb851 100644 --- a/lib/pages/settings_views/global_settings_view/tor_settings/tor_settings_view.dart +++ b/lib/pages/settings_views/global_settings_view/tor_settings/tor_settings_view.dart @@ -35,28 +35,62 @@ class TorSettingsView extends ConsumerStatefulWidget { } class _TorSettingsViewState extends ConsumerState { + TorSyncStatus _networkStatus = TorSyncStatus.unableToSync; + Widget _buildTorIcon(TorSyncStatus status) { switch (status) { case TorSyncStatus.unableToSync: - return SvgPicture.asset( - Assets.svg.tor, - color: Theme.of(context).extension()!.textSubtitle3, - width: 200, - height: 200, + return Stack( + alignment: AlignmentDirectional.center, + children: [ + SvgPicture.asset( + Assets.svg.tor, + color: Theme.of(context).extension()!.textSubtitle3, + width: 200, + height: 200, + ), + Text( + "CONNECT", + style: STextStyles.smallMed14(context).copyWith( + color: Theme.of(context).extension()!.popupBG), + ) + ], ); case TorSyncStatus.synced: - return SvgPicture.asset( - Assets.svg.tor, - color: Theme.of(context).extension()!.accentColorGreen, - width: 200, - height: 200, + return Stack( + alignment: AlignmentDirectional.center, + children: [ + SvgPicture.asset( + Assets.svg.tor, + color: + Theme.of(context).extension()!.accentColorGreen, + width: 200, + height: 200, + ), + Text( + "CONNECTED", + style: STextStyles.smallMed14(context).copyWith( + color: Theme.of(context).extension()!.popupBG), + ) + ], ); case TorSyncStatus.syncing: - return SvgPicture.asset( - Assets.svg.tor, - color: Theme.of(context).extension()!.accentColorYellow, - width: 200, - height: 200, + return Stack( + alignment: AlignmentDirectional.center, + children: [ + SvgPicture.asset( + Assets.svg.tor, + color: + Theme.of(context).extension()!.accentColorYellow, + width: 200, + height: 200, + ), + Text( + "CONNECTING", + style: STextStyles.smallMed14(context).copyWith( + color: Theme.of(context).extension()!.popupBG), + ) + ], ); } } @@ -157,7 +191,7 @@ class _TorSettingsViewState extends ConsumerState { children: [ Padding( padding: const EdgeInsets.all(10.0), - child: _buildTorIcon(TorSyncStatus.syncing), + child: _buildTorIcon(_networkStatus), ), ], ), @@ -174,7 +208,7 @@ class _TorSettingsViewState extends ConsumerState { style: STextStyles.titleBold12(context), ), const Spacer(), - _buildTorStatus(TorSyncStatus.syncing), + _buildTorStatus(_networkStatus), ], ), ), From 236c5bf2a8a5c80d4f20d9239f3ca88e88b68143 Mon Sep 17 00:00:00 2001 From: ryleedavis Date: Thu, 7 Sep 2023 11:22:59 -0600 Subject: [PATCH 13/13] tor settings when clicking connection on menu --- lib/pages_desktop_specific/desktop_menu.dart | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/pages_desktop_specific/desktop_menu.dart b/lib/pages_desktop_specific/desktop_menu.dart index 6e0b38c65..b21a1d724 100644 --- a/lib/pages_desktop_specific/desktop_menu.dart +++ b/lib/pages_desktop_specific/desktop_menu.dart @@ -16,6 +16,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:stackwallet/pages/home_view/sub_widgets/tor_sync_status_changed_event.dart'; import 'package:stackwallet/pages_desktop_specific/desktop_menu_item.dart'; +import 'package:stackwallet/pages_desktop_specific/settings/settings_menu.dart'; import 'package:stackwallet/providers/desktop/current_desktop_menu_item.dart'; import 'package:stackwallet/themes/stack_colors.dart'; import 'package:stackwallet/utilities/assets.dart'; @@ -211,11 +212,11 @@ class _DesktopMenuState extends ConsumerState { cursor: SystemMouseCursors.click, child: GestureDetector( onTap: () { - // ref.watch(selectedSettingsMenuItemStateProvider.state).state = - // 4; - // ref.watch(selectedSettingsMenuItemStateProvider.state).state = - // 5; - // Navigator.of(context).pushNamed(DesktopHomeView.routeName); + ref.read(currentDesktopMenuItemProvider.state).state = + DesktopMenuItemId.settings; + ref + .watch(selectedSettingsMenuItemStateProvider.state) + .state = 4; }, child: _buildTorIcon(TorSyncStatus.unableToSync)), ),