Skip to content

Commit

Permalink
feat: consolidate all navigation together
Browse files Browse the repository at this point in the history
  • Loading branch information
hjiangsu committed Feb 19, 2025
1 parent cf46506 commit d5d80fc
Show file tree
Hide file tree
Showing 61 changed files with 1,014 additions and 1,321 deletions.
29 changes: 3 additions & 26 deletions lib/account/widgets/account_page_app_bar.dart
Original file line number Diff line number Diff line change
@@ -1,25 +1,21 @@
import 'dart:io';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:swipeable_page_route/swipeable_page_route.dart';

import 'package:thunder/account/bloc/account_bloc.dart';
import 'package:thunder/account/utils/profiles.dart';
import 'package:thunder/core/enums/full_name.dart';
import 'package:thunder/core/enums/local_settings.dart';
import 'package:thunder/core/singletons/lemmy_client.dart';
import 'package:thunder/feed/bloc/feed_bloc.dart';
import 'package:thunder/feed/utils/user_share.dart';
import 'package:thunder/feed/utils/utils.dart';
import 'package:thunder/shared/sort_picker.dart';
import 'package:thunder/shared/thunder_popup_menu_item.dart';
import 'package:thunder/thunder/bloc/thunder_bloc.dart';
import 'package:thunder/user/bloc/user_settings_bloc.dart';
import 'package:thunder/user/pages/user_settings_page.dart';
import 'package:thunder/utils/instance.dart';
import 'package:thunder/utils/navigation.dart';

/// Holds the app bar for the account page
class AccountPageAppBar extends StatefulWidget {
Expand Down Expand Up @@ -153,26 +149,7 @@ class AccountAppBarUserActions extends StatelessWidget {
tooltip: l10n.accountSettings,
onPressed: () {
HapticFeedback.mediumImpact();

final AccountBloc accountBloc = context.read<AccountBloc>();
final ThunderBloc thunderBloc = context.read<ThunderBloc>();
final UserSettingsBloc userSettingsBloc = UserSettingsBloc();

Navigator.of(context).push(
SwipeablePageRoute(
transitionDuration: thunderBloc.state.reduceAnimations ? const Duration(milliseconds: 100) : null,
canSwipe: Platform.isIOS || thunderBloc.state.enableFullScreenSwipeNavigationGesture,
canOnlySwipeFromEdge: !thunderBloc.state.enableFullScreenSwipeNavigationGesture,
builder: (context) => MultiBlocProvider(
providers: [
BlocProvider.value(value: accountBloc),
BlocProvider.value(value: thunderBloc),
BlocProvider.value(value: userSettingsBloc),
],
child: const UserSettingsPage(),
),
),
);
navigateToSettingPage(context, LocalSettings.settingsPageAccount);
},
),
PopupMenuButton(
Expand Down
101 changes: 0 additions & 101 deletions lib/comment/utils/navigate_comment.dart

This file was deleted.

2 changes: 1 addition & 1 deletion lib/comment/widgets/comment_card.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:lemmy_api_client/v3.dart';

import 'package:thunder/comment/enums/comment_action.dart';
import 'package:thunder/comment/utils/navigate_comment.dart';
import 'package:thunder/utils/navigation.dart';
import 'package:thunder/comment/widgets/comment_action_bottom_sheet.dart';
import 'package:thunder/core/auth/bloc/auth_bloc.dart';
import 'package:thunder/core/enums/nested_comment_indicator.dart';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import 'package:lemmy_api_client/v3.dart';

import 'package:thunder/comment/enums/comment_action.dart';
import 'package:thunder/core/auth/bloc/auth_bloc.dart';
import 'package:thunder/modlog/utils/navigate_modlog.dart';
import 'package:thunder/utils/navigation.dart';
import 'package:thunder/post/enums/post_action.dart';
import 'package:thunder/shared/bottom_sheet_action.dart';
import 'package:thunder/shared/dialogs.dart';
Expand Down
2 changes: 1 addition & 1 deletion lib/comment/widgets/comment_list_entry.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:lemmy_api_client/v3.dart';

// Project imports
import 'package:thunder/comment/utils/navigate_comment.dart';
import 'package:thunder/utils/navigation.dart';
import 'package:thunder/core/auth/bloc/auth_bloc.dart';
import 'package:thunder/post/bloc/post_bloc.dart' as post_bloc;
import 'package:thunder/shared/comment_reference.dart';
Expand Down
25 changes: 2 additions & 23 deletions lib/community/widgets/community_drawer.dart
Original file line number Diff line number Diff line change
@@ -1,29 +1,26 @@
import 'dart:io';
import 'dart:math';

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

import 'package:lemmy_api_client/v3.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:sliver_tools/sliver_tools.dart';
import 'package:swipeable_page_route/swipeable_page_route.dart';

import 'package:thunder/account/bloc/account_bloc.dart';
import 'package:thunder/account/utils/profiles.dart';
import 'package:thunder/community/bloc/anonymous_subscriptions_bloc.dart';
import 'package:thunder/core/auth/bloc/auth_bloc.dart';
import 'package:thunder/feed/feed.dart';
import 'package:thunder/moderator/view/report_page.dart';
import 'package:thunder/shared/avatars/community_avatar.dart';
import 'package:thunder/shared/avatars/user_avatar.dart';
import 'package:thunder/thunder/bloc/thunder_bloc.dart';
import 'package:thunder/utils/instance.dart';
import 'package:thunder/utils/global_context.dart';
import 'package:thunder/core/enums/full_name.dart';
import 'package:thunder/feed/utils/community.dart';
import 'package:thunder/utils/navigation.dart';

class CommunityDrawer extends StatefulWidget {
const CommunityDrawer({super.key, this.navigateToAccount});
Expand Down Expand Up @@ -256,25 +253,7 @@ class FeedDrawerItems extends StatelessWidget {
label: l10n.report(2),
onTap: () async {
HapticFeedback.mediumImpact();
ThunderBloc thunderBloc = context.read<ThunderBloc>();

await Navigator.of(context).push(
SwipeablePageRoute(
transitionDuration: thunderBloc.state.reduceAnimations ? const Duration(milliseconds: 100) : null,
backGestureDetectionStartOffset: !kIsWeb && Platform.isAndroid ? 45 : 0,
backGestureDetectionWidth: 45,
canOnlySwipeFromEdge: true,
builder: (otherContext) {
return MultiBlocProvider(
providers: [
BlocProvider.value(value: feedBloc),
BlocProvider.value(value: thunderBloc),
],
child: const ReportFeedPage(),
);
},
),
);
navigateToReportPage(context);
},
icon: Icons.report_rounded,
trailing: const Icon(Icons.arrow_forward_rounded),
Expand Down
2 changes: 1 addition & 1 deletion lib/community/widgets/community_list_entry.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:thunder/account/bloc/account_bloc.dart';
import 'package:thunder/core/enums/full_name.dart';
import 'package:thunder/core/singletons/lemmy_client.dart';
import 'package:thunder/feed/utils/utils.dart';
import 'package:thunder/feed/view/feed_page.dart';
import 'package:thunder/shared/avatars/community_avatar.dart';
import 'package:thunder/shared/full_name_widgets.dart';
import 'package:thunder/shared/snackbar.dart';
import 'package:thunder/utils/instance.dart';
import 'package:thunder/utils/navigation.dart';
import 'package:thunder/utils/numbers.dart';

class CommunityListEntry extends StatelessWidget {
Expand Down
3 changes: 1 addition & 2 deletions lib/community/widgets/community_sidebar.dart
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,9 @@ import 'package:thunder/community/enums/community_action.dart';
import 'package:thunder/core/auth/bloc/auth_bloc.dart';
import 'package:thunder/core/singletons/lemmy_client.dart';
import 'package:thunder/feed/bloc/feed_bloc.dart';
import 'package:thunder/feed/utils/utils.dart';
import 'package:thunder/feed/view/feed_page.dart';
import 'package:thunder/instance/widgets/instance_view.dart';
import 'package:thunder/post/utils/navigate_create_post.dart';
import 'package:thunder/utils/navigation.dart';
import 'package:thunder/shared/common_markdown_body.dart';
import 'package:thunder/shared/avatars/user_avatar.dart';
import 'package:thunder/shared/full_name_widgets.dart';
Expand Down
2 changes: 1 addition & 1 deletion lib/community/widgets/post_card.dart
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import 'package:thunder/feed/view/feed_page.dart';
import 'package:thunder/feed/widgets/widgets.dart';
import 'package:thunder/post/enums/post_action.dart';
import 'package:thunder/thunder/bloc/thunder_bloc.dart';
import 'package:thunder/post/utils/navigate_post.dart';
import 'package:thunder/utils/navigation.dart';
import 'package:thunder/user/enums/user_action.dart';

class PostCard extends StatefulWidget {
Expand Down
1 change: 1 addition & 0 deletions lib/community/widgets/post_card_metadata.dart
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import 'package:thunder/shared/text/scalable_text.dart';
import 'package:thunder/thunder/bloc/thunder_bloc.dart';
import 'package:thunder/utils/date_time.dart';
import 'package:thunder/utils/instance.dart';
import 'package:thunder/utils/navigation.dart';
import 'package:thunder/utils/numbers.dart';

/// Contains metadata related to a given post. This is generally displayed as part of the post card.
Expand Down
51 changes: 51 additions & 0 deletions lib/core/enums/local_settings.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ enum LocalSettingsCategories {
floatingActionButton('floatingActionButton'),
accessibility('Accessibility'),
account('Account'),
accountLanguages('Discussion Languages'),
accountBlocklist('Blocklists'),
accountMediaManagement('Media Management'),
userLabels('User Labels'),
about('About'),
debug('Debug'),
Expand Down Expand Up @@ -74,6 +77,27 @@ enum LocalSettings {
settingsPageGeneral(name: 'settings_page_general', key: 'settingsPageGeneral', category: LocalSettingsCategories.general, subCategory: LocalSettingsSubCategories.general, isPage: true),
settingsPageFilters(name: 'settings_page_filters', key: 'settingsPageFilters', category: LocalSettingsCategories.filters, subCategory: LocalSettingsSubCategories.general, isPage: true),
settingsPageAppearance(name: 'settings_page_appearance', key: 'settingsPageAppearance', category: LocalSettingsCategories.appearance, subCategory: LocalSettingsSubCategories.general, isPage: true),
settingsPageAppearanceTheming(
name: 'settings_page_appearance_theming',
key: 'settingsPageAppearanceTheming',
category: LocalSettingsCategories.theming,
subCategory: LocalSettingsSubCategories.general,
isPage: true,
),
settingsPageAppearancePosts(
name: 'settings_page_appearance_posts',
key: 'settingsPageAppearancePosts',
category: LocalSettingsCategories.posts,
subCategory: LocalSettingsSubCategories.general,
isPage: true,
),
settingsPageAppearanceComments(
name: 'settings_page_appearance_comments',
key: 'settingsPageAppearanceComments',
category: LocalSettingsCategories.comments,
subCategory: LocalSettingsSubCategories.general,
isPage: true,
),
settingsPageGestures(name: 'settings_page_gestures', key: 'settingsPageGestures', category: LocalSettingsCategories.gestures, subCategory: LocalSettingsSubCategories.general, isPage: true),
settingsPageVideo(name: 'settings_page_video', key: 'settingsPageVideo', category: LocalSettingsCategories.videoPlayer, subCategory: LocalSettingsSubCategories.general, isPage: true),
settingsPageFloatingActionButton(
Expand All @@ -85,6 +109,27 @@ enum LocalSettings {
settingsPageAccessibility(
name: 'settings_page_accessibility', key: 'settingsPageAccessibility', category: LocalSettingsCategories.accessibility, subCategory: LocalSettingsSubCategories.general, isPage: true),
settingsPageAccount(name: 'settings_page_account', key: 'settingsPageAccount', category: LocalSettingsCategories.account, subCategory: LocalSettingsSubCategories.general, isPage: true),
settingsPageAccountLanguages(
name: 'settings_page_account_languages',
key: 'settingsPageAccountLanguages',
category: LocalSettingsCategories.accountLanguages,
subCategory: LocalSettingsSubCategories.contentManagement,
isPage: true,
),
settingsPageAccountBlocks(
name: 'settings_page_account_blocks',
key: 'settingsPageAccountBlocks',
category: LocalSettingsCategories.accountBlocklist,
subCategory: LocalSettingsSubCategories.contentManagement,
isPage: true,
),
settingsPageAccountMedia(
name: 'settings_page_account_media',
key: 'settingsPageAccountMedia',
category: LocalSettingsCategories.accountMediaManagement,
subCategory: LocalSettingsSubCategories.contentManagement,
isPage: true,
),
settingsPageUserLabels(name: 'settings_page_user_labels', key: 'settingsPageUserLabels', category: LocalSettingsCategories.userLabels, subCategory: LocalSettingsSubCategories.general, isPage: true),
settingsPageAbout(name: 'settings_page_about', key: 'settingsPageAbout', category: LocalSettingsCategories.about, subCategory: LocalSettingsSubCategories.general, isPage: true),
settingsPageDebug(name: 'settings_page_debug', key: 'settingsPageDebug', category: LocalSettingsCategories.debug, subCategory: LocalSettingsSubCategories.general, isPage: true),
Expand Down Expand Up @@ -436,11 +481,17 @@ extension LocalizationExt on AppLocalizations {
'settingsPageAbout': settingsPageAbout,
'settingsPageUserLabels': settingsPageUserLabels,
'settingsPageAccount': settingsPageAccount,
'settingsPageAccountLanguages': settingsPageAccountLanguages,
'settingsPageAccountBlocks': settingsPageAccountBlocks,
'settingsPageAccountMedia': settingsPageAccountMedia,
'settingsPageAccessibility': settingsPageAccessibility,
'settingsPageFloatingActionButton': settingsPageFloatingActionButton,
'settingsPageVideo': settingsPageVideo,
'settingsPageGestures': settingsPageGestures,
'settingsPageAppearance': settingsPageAppearance,
'settingsPageAppearanceTheming': settingsPageAppearanceTheming,
'settingsPageAppearancePosts': settingsPageAppearancePosts,
'settingsPageAppearanceComments': settingsPageAppearanceComments,
'settingsPageFilters': settingsPageFilters,
'settingsPageGeneral': settingsPageGeneral,
'defaultFeedType': defaultFeedType,
Expand Down
2 changes: 1 addition & 1 deletion lib/core/theme/bloc/theme_bloc.dart
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ class ThemeBloc extends Bloc<ThemeEvent, ThemeState> {
bool usePureBlackTheme = prefs.getBool(LocalSettings.usePureBlackTheme.name) ?? false;
if (usePureBlackTheme && (themeType == ThemeType.dark || (themeType == ThemeType.system && brightness == Brightness.dark))) themeType = ThemeType.pureBlack;

bool useDarkTheme = themeType == ThemeType.dark || themeType == ThemeType.pureBlack;
bool useDarkTheme = themeType == ThemeType.dark || themeType == ThemeType.pureBlack || (themeType == ThemeType.system && brightness == Brightness.dark);

CustomThemeType selectedTheme = CustomThemeType.values.byName(prefs.getString(LocalSettings.appThemeAccentColor.name) ?? CustomThemeType.deepBlue.name);

Expand Down
Loading

0 comments on commit d5d80fc

Please sign in to comment.