hide or show Swap features based on configuration

This commit is contained in:
sneurlax 2024-06-05 17:48:32 -05:00
parent 2c07f2c13b
commit 42b728eb08
5 changed files with 122 additions and 106 deletions
lib
pages
home_view/sub_widgets
token_view/sub_widgets
wallet_view
pages_desktop_specific
desktop_menu.dart
my_stack_view/wallet_view/sub_widgets

View file

@ -10,6 +10,8 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../../../app_config.dart';
import '../../../providers/providers.dart'; import '../../../providers/providers.dart';
import '../../../themes/stack_colors.dart'; import '../../../themes/stack_colors.dart';
import '../../../utilities/text_styles.dart'; import '../../../utilities/text_styles.dart';
@ -86,55 +88,57 @@ class _HomeViewButtonBarState extends ConsumerState<HomeViewButtonBar> {
), ),
), ),
), ),
const SizedBox( if (AppConfig.hasFeature(AppFeature.swap))
width: 8, const SizedBox(
), width: 8,
Expanded( ),
child: TextButton( if (AppConfig.hasFeature(AppFeature.swap))
style: selectedIndex == 1 Expanded(
? Theme.of(context) child: TextButton(
.extension<StackColors>()! style: selectedIndex == 1
.getPrimaryEnabledButtonStyle(context)! ? Theme.of(context)
.copyWith( .extension<StackColors>()!
minimumSize: .getPrimaryEnabledButtonStyle(context)!
MaterialStateProperty.all<Size>(const Size(46, 36)), .copyWith(
) minimumSize:
: Theme.of(context) MaterialStateProperty.all<Size>(const Size(46, 36)),
.extension<StackColors>()! )
.getSecondaryEnabledButtonStyle(context)! : Theme.of(context)
.copyWith( .extension<StackColors>()!
minimumSize: .getSecondaryEnabledButtonStyle(context)!
MaterialStateProperty.all<Size>(const Size(46, 36)), .copyWith(
), minimumSize:
onPressed: () async { MaterialStateProperty.all<Size>(const Size(46, 36)),
FocusScope.of(context).unfocus(); ),
if (selectedIndex != 1) { onPressed: () async {
ref.read(homeViewPageIndexStateProvider.state).state = 1; FocusScope.of(context).unfocus();
} if (selectedIndex != 1) {
// DateTime now = DateTime.now(); ref.read(homeViewPageIndexStateProvider.state).state = 1;
// if (ref.read(prefsChangeNotifierProvider).externalCalls) { }
// print("loading?"); // DateTime now = DateTime.now();
// await ExchangeDataLoadingService().loadAll(ref); // if (ref.read(prefsChangeNotifierProvider).externalCalls) {
// } // print("loading?");
// if (now.difference(_lastRefreshed) > _refreshInterval) { // await ExchangeDataLoadingService().loadAll(ref);
// await ExchangeDataLoadingService().loadAll(ref); // }
// } // if (now.difference(_lastRefreshed) > _refreshInterval) {
}, // await ExchangeDataLoadingService().loadAll(ref);
child: Text( // }
"Swap", },
style: STextStyles.button(context).copyWith( child: Text(
fontSize: 14, "Swap",
color: selectedIndex == 1 style: STextStyles.button(context).copyWith(
? Theme.of(context) fontSize: 14,
.extension<StackColors>()! color: selectedIndex == 1
.buttonTextPrimary ? Theme.of(context)
: Theme.of(context) .extension<StackColors>()!
.extension<StackColors>()! .buttonTextPrimary
.buttonTextSecondary, : Theme.of(context)
.extension<StackColors>()!
.buttonTextSecondary,
),
), ),
), ),
), ),
),
const SizedBox( const SizedBox(
width: 8, width: 8,
), ),

View file

@ -14,12 +14,10 @@ import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:tuple/tuple.dart';
import '../../../app_config.dart';
import '../../../models/isar/models/ethereum/eth_contract.dart'; import '../../../models/isar/models/ethereum/eth_contract.dart';
import '../../buy_view/buy_in_wallet_view.dart';
import '../../exchange_view/wallet_initiated_exchange_view.dart';
import '../../receive_view/receive_view.dart';
import '../../send_view/token_send_view.dart';
import '../../wallet_view/sub_widgets/wallet_refresh_button.dart';
import '../../../providers/global/locale_provider.dart'; import '../../../providers/global/locale_provider.dart';
import '../../../providers/global/prefs_provider.dart'; import '../../../providers/global/prefs_provider.dart';
import '../../../providers/global/price_provider.dart'; import '../../../providers/global/price_provider.dart';
@ -37,7 +35,11 @@ import '../../../wallets/isar/providers/eth/token_balance_provider.dart';
import '../../../wallets/isar/providers/wallet_info_provider.dart'; import '../../../wallets/isar/providers/wallet_info_provider.dart';
import '../../../widgets/conditional_parent.dart'; import '../../../widgets/conditional_parent.dart';
import '../../../widgets/rounded_container.dart'; import '../../../widgets/rounded_container.dart';
import 'package:tuple/tuple.dart'; import '../../buy_view/buy_in_wallet_view.dart';
import '../../exchange_view/wallet_initiated_exchange_view.dart';
import '../../receive_view/receive_view.dart';
import '../../send_view/token_send_view.dart';
import '../../wallet_view/sub_widgets/wallet_refresh_button.dart';
class TokenSummary extends ConsumerWidget { class TokenSummary extends ConsumerWidget {
const TokenSummary({ const TokenSummary({
@ -249,18 +251,20 @@ class TokenWalletOptions extends ConsumerWidget {
subLabel: "Send", subLabel: "Send",
iconAssetPathSVG: Assets.svg.arrowUpRight, iconAssetPathSVG: Assets.svg.arrowUpRight,
), ),
const SizedBox( if (AppConfig.hasFeature(AppFeature.swap))
width: 16, const SizedBox(
), width: 16,
TokenOptionsButton( ),
onPressed: () => _onExchangePressed(context), if (AppConfig.hasFeature(AppFeature.swap))
subLabel: "Swap", TokenOptionsButton(
iconAssetPathSVG: ref.watch( onPressed: () => _onExchangePressed(context),
themeProvider.select( subLabel: "Swap",
(value) => value.assets.exchange, iconAssetPathSVG: ref.watch(
themeProvider.select(
(value) => value.assets.exchange,
),
), ),
), ),
),
const SizedBox( const SizedBox(
width: 16, width: 16,
), ),

View file

@ -16,31 +16,12 @@ import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:isar/isar.dart'; import 'package:isar/isar.dart';
import 'package:tuple/tuple.dart';
import '../../app_config.dart';
import '../../frost_route_generator.dart'; import '../../frost_route_generator.dart';
import '../../models/isar/exchange_cache/currency.dart'; import '../../models/isar/exchange_cache/currency.dart';
import '../../notifications/show_flush_bar.dart'; import '../../notifications/show_flush_bar.dart';
import '../buy_view/buy_in_wallet_view.dart';
import '../cashfusion/cashfusion_view.dart';
import '../coin_control/coin_control_view.dart';
import '../exchange_view/wallet_initiated_exchange_view.dart';
import '../home_view/home_view.dart';
import '../monkey/monkey_view.dart';
import '../notification_views/notifications_view.dart';
import '../ordinals/ordinals_view.dart';
import '../paynym/paynym_claim_view.dart';
import '../paynym/paynym_home_view.dart';
import '../receive_view/receive_view.dart';
import '../send_view/frost_ms/frost_send_view.dart';
import '../send_view/send_view.dart';
import '../settings_views/wallet_settings_view/wallet_network_settings_view/wallet_network_settings_view.dart';
import '../settings_views/wallet_settings_view/wallet_settings_view.dart';
import '../special/firo_rescan_recovery_error_dialog.dart';
import '../token_view/my_tokens_view.dart';
import 'sub_widgets/transactions_list.dart';
import 'sub_widgets/wallet_summary.dart';
import 'transaction_views/all_transactions_view.dart';
import 'transaction_views/tx_v2/all_transactions_v2_view.dart';
import 'transaction_views/tx_v2/transaction_v2_list.dart';
import '../../providers/global/active_wallet_provider.dart'; import '../../providers/global/active_wallet_provider.dart';
import '../../providers/global/auto_swb_service_provider.dart'; import '../../providers/global/auto_swb_service_provider.dart';
import '../../providers/global/paynym_api_provider.dart'; import '../../providers/global/paynym_api_provider.dart';
@ -95,7 +76,28 @@ import '../../widgets/wallet_navigation_bar/components/icons/receive_nav_icon.da
import '../../widgets/wallet_navigation_bar/components/icons/send_nav_icon.dart'; import '../../widgets/wallet_navigation_bar/components/icons/send_nav_icon.dart';
import '../../widgets/wallet_navigation_bar/components/wallet_navigation_bar_item.dart'; import '../../widgets/wallet_navigation_bar/components/wallet_navigation_bar_item.dart';
import '../../widgets/wallet_navigation_bar/wallet_navigation_bar.dart'; import '../../widgets/wallet_navigation_bar/wallet_navigation_bar.dart';
import 'package:tuple/tuple.dart'; import '../buy_view/buy_in_wallet_view.dart';
import '../cashfusion/cashfusion_view.dart';
import '../coin_control/coin_control_view.dart';
import '../exchange_view/wallet_initiated_exchange_view.dart';
import '../home_view/home_view.dart';
import '../monkey/monkey_view.dart';
import '../notification_views/notifications_view.dart';
import '../ordinals/ordinals_view.dart';
import '../paynym/paynym_claim_view.dart';
import '../paynym/paynym_home_view.dart';
import '../receive_view/receive_view.dart';
import '../send_view/frost_ms/frost_send_view.dart';
import '../send_view/send_view.dart';
import '../settings_views/wallet_settings_view/wallet_network_settings_view/wallet_network_settings_view.dart';
import '../settings_views/wallet_settings_view/wallet_settings_view.dart';
import '../special/firo_rescan_recovery_error_dialog.dart';
import '../token_view/my_tokens_view.dart';
import 'sub_widgets/transactions_list.dart';
import 'sub_widgets/wallet_summary.dart';
import 'transaction_views/all_transactions_view.dart';
import 'transaction_views/tx_v2/all_transactions_v2_view.dart';
import 'transaction_views/tx_v2/transaction_v2_list.dart';
/// [eventBus] should only be set during testing /// [eventBus] should only be set during testing
class WalletView extends ConsumerStatefulWidget { class WalletView extends ConsumerStatefulWidget {
@ -1059,7 +1061,8 @@ class _WalletViewState extends ConsumerState<WalletView> {
}, },
), ),
if (Constants.enableExchange && if (Constants.enableExchange &&
ref.watch(pWalletCoin(walletId)) is! FrostCurrency) ref.watch(pWalletCoin(walletId)) is! FrostCurrency &&
AppConfig.hasFeature(AppFeature.swap))
WalletNavigationBarItemData( WalletNavigationBarItemData(
label: "Swap", label: "Swap",
icon: const ExchangeNavIcon(), icon: const ExchangeNavIcon(),

View file

@ -14,15 +14,16 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import '../app_config.dart'; import '../app_config.dart';
import 'desktop_menu_item.dart';
import 'settings/settings_menu.dart';
import '../providers/desktop/current_desktop_menu_item.dart'; import '../providers/desktop/current_desktop_menu_item.dart';
import '../themes/stack_colors.dart'; import '../themes/stack_colors.dart';
import '../utilities/assets.dart'; import '../utilities/assets.dart';
import '../utilities/text_styles.dart'; import '../utilities/text_styles.dart';
import '../widgets/desktop/desktop_tor_status_button.dart'; import '../widgets/desktop/desktop_tor_status_button.dart';
import '../widgets/desktop/living_stack_icon.dart'; import '../widgets/desktop/living_stack_icon.dart';
import 'desktop_menu_item.dart';
import 'settings/settings_menu.dart';
enum DesktopMenuItemId { enum DesktopMenuItemId {
myStack, myStack,
@ -186,17 +187,19 @@ class _DesktopMenuState extends ConsumerState<DesktopMenu> {
onChanged: updateSelectedMenuItem, onChanged: updateSelectedMenuItem,
controller: controllers[0], controller: controllers[0],
), ),
const SizedBox( if (AppConfig.hasFeature(AppFeature.swap))
height: 2, const SizedBox(
), height: 2,
DesktopMenuItem( ),
duration: duration, if (AppConfig.hasFeature(AppFeature.swap))
icon: const DesktopExchangeIcon(), DesktopMenuItem(
label: "Swap", duration: duration,
value: DesktopMenuItemId.exchange, icon: const DesktopExchangeIcon(),
onChanged: updateSelectedMenuItem, label: "Swap",
controller: controllers[1], value: DesktopMenuItemId.exchange,
), onChanged: updateSelectedMenuItem,
controller: controllers[1],
),
const SizedBox( const SizedBox(
height: 2, height: 2,
), ),

View file

@ -15,16 +15,12 @@ import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import '../../../../app_config.dart';
import '../../../../notifications/show_flush_bar.dart'; import '../../../../notifications/show_flush_bar.dart';
import '../../../../pages/monkey/monkey_view.dart'; import '../../../../pages/monkey/monkey_view.dart';
import '../../../../pages/paynym/paynym_claim_view.dart'; import '../../../../pages/paynym/paynym_claim_view.dart';
import '../../../../pages/paynym/paynym_home_view.dart'; import '../../../../pages/paynym/paynym_home_view.dart';
import '../../../cashfusion/desktop_cashfusion_view.dart';
import '../../../coin_control/desktop_coin_control_view.dart';
import '../../../desktop_menu.dart';
import '../desktop_wallet_view.dart';
import 'more_features/more_features_dialog.dart';
import '../../../ordinals/desktop_ordinals_view.dart';
import '../../../../providers/desktop/current_desktop_menu_item.dart'; import '../../../../providers/desktop/current_desktop_menu_item.dart';
import '../../../../providers/global/paynym_api_provider.dart'; import '../../../../providers/global/paynym_api_provider.dart';
import '../../../../providers/providers.dart'; import '../../../../providers/providers.dart';
@ -48,6 +44,12 @@ import '../../../../widgets/desktop/desktop_dialog.dart';
import '../../../../widgets/desktop/primary_button.dart'; import '../../../../widgets/desktop/primary_button.dart';
import '../../../../widgets/desktop/secondary_button.dart'; import '../../../../widgets/desktop/secondary_button.dart';
import '../../../../widgets/loading_indicator.dart'; import '../../../../widgets/loading_indicator.dart';
import '../../../cashfusion/desktop_cashfusion_view.dart';
import '../../../coin_control/desktop_coin_control_view.dart';
import '../../../desktop_menu.dart';
import '../../../ordinals/desktop_ordinals_view.dart';
import '../desktop_wallet_view.dart';
import 'more_features/more_features_dialog.dart';
class DesktopWalletFeatures extends ConsumerStatefulWidget { class DesktopWalletFeatures extends ConsumerStatefulWidget {
const DesktopWalletFeatures({ const DesktopWalletFeatures({
@ -366,7 +368,7 @@ class _DesktopWalletFeaturesState extends ConsumerState<DesktopWalletFeatures> {
return Row( return Row(
children: [ children: [
if (Constants.enableExchange) if (Constants.enableExchange && AppConfig.hasFeature(AppFeature.swap))
SecondaryButton( SecondaryButton(
label: "Swap", label: "Swap",
width: buttonWidth, width: buttonWidth,