Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion lib/src/app/utils/navigation.dart
Original file line number Diff line number Diff line change
Expand Up @@ -711,7 +711,7 @@ void navigateToSearchPage(BuildContext context) {
BlocProvider(create: (context) => SearchBloc(account: account)),
BlocProvider.value(value: thunderBloc),
],
child: SearchPage(communityToSearch: feedBloc.state.community, isInitiallyFocused: true),
child: SearchPage(community: feedBloc.state.community),
),
),
);
Expand Down
2 changes: 1 addition & 1 deletion lib/src/app/widgets/bottom_nav_bar.dart
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ class _CustomBottomNavigationBarState extends State<CustomBottomNavigationBar> {
if (widget.selectedPageIndex == 1 && index != 1) {
FocusManager.instance.primaryFocus?.unfocus();
} else if (widget.selectedPageIndex == 1 && index == 1) {
context.read<SearchBloc>().add(FocusSearchEvent());
context.read<SearchBloc>().add(SearchFocusRequested());
}

if (widget.selectedPageIndex == 3 && index == 3) {
Expand Down
26 changes: 26 additions & 0 deletions lib/src/core/enums/search_sort_type.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import 'package:thunder/src/core/enums/threadiverse_platform.dart';

enum SearchSortType {
new_('New'),
old('Old'),
controversial('Controversial'),
topHour('TopHour'),
topSixHour('TopSixHour'),
topTwelveHour('TopTwelveHour'),
topDay('TopDay'),
topWeek('TopWeek'),
topMonth('TopMonth'),
topThreeMonths('TopThreeMonths'),
topSixMonths('TopSixMonths'),
topNineMonths('TopNineMonths'),
topYear('TopYear'),
topAll('TopAll');

/// The value of the sort type for the API.
final String value;

/// The platform this sort type is used on. If null, it is used on all platforms.
final ThreadiversePlatform? platform;

const SearchSortType(this.value, {this.platform});
}
3 changes: 2 additions & 1 deletion lib/src/core/network/lemmy_api.dart
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import 'package:thunder/src/core/enums/comment_sort_type.dart';
import 'package:thunder/src/core/enums/feed_list_type.dart';
import 'package:thunder/src/core/enums/meta_search_type.dart';
import 'package:thunder/src/core/enums/post_sort_type.dart';
import 'package:thunder/src/core/enums/search_sort_type.dart';
import 'package:thunder/src/core/models/thunder_site.dart';
import 'package:thunder/src/features/modlog/modlog.dart';
import 'package:thunder/src/features/post/post.dart';
Expand Down Expand Up @@ -509,7 +510,7 @@ class LemmyApi {
String? communityName,
int? creatorId,
MetaSearchType? type,
PostSortType? sort,
SearchSortType? sort,
FeedListType? listingType,
int? page,
int? limit,
Expand Down
3 changes: 2 additions & 1 deletion lib/src/core/network/piefed_api.dart
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import 'package:thunder/src/core/enums/comment_sort_type.dart';
import 'package:thunder/src/core/enums/feed_list_type.dart';
import 'package:thunder/src/core/enums/meta_search_type.dart';
import 'package:thunder/src/core/enums/post_sort_type.dart';
import 'package:thunder/src/core/enums/search_sort_type.dart';
import 'package:thunder/src/core/models/thunder_site.dart';
import 'package:thunder/src/features/post/post.dart';
import 'package:thunder/src/features/user/user.dart';
Expand Down Expand Up @@ -415,7 +416,7 @@ class PiefedApi {
Future<Map<String, dynamic>> search({
required String query,
MetaSearchType? type,
PostSortType? sort,
SearchSortType? sort,
FeedListType? listingType,
int? page,
int? limit,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import 'package:flutter/services.dart';

import 'package:flutter_bloc/flutter_bloc.dart';

import 'package:thunder/src/core/enums/post_sort_type.dart';
import 'package:thunder/src/features/account/account.dart';
import 'package:thunder/src/features/community/community.dart';
import 'package:thunder/src/core/enums/full_name.dart';
Expand Down Expand Up @@ -149,7 +150,7 @@ class _SortActionChip extends StatelessWidget {
showDragHandle: true,
context: context,
isScrollControlled: true,
builder: (builderContext) => SortPicker(
builder: (builderContext) => SortPicker<PostSortType>(
account: feedBloc.account,
title: l10n.sortOptions,
onSelect: (selected) async {
Expand Down
3 changes: 2 additions & 1 deletion lib/src/features/feed/presentation/widgets/feed_fab.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:thunder/l10n/generated/app_localizations.dart';
import 'package:thunder/src/app/cubits/feed_ui_cubit/feed_ui_cubit.dart';

import 'package:thunder/src/core/enums/post_sort_type.dart';
import 'package:thunder/src/features/account/account.dart';
import 'package:thunder/src/core/enums/fab_action.dart';
import 'package:thunder/src/features/feed/feed.dart';
Expand Down Expand Up @@ -277,7 +278,7 @@ class FeedFAB extends StatelessWidget {
showDragHandle: true,
context: context,
isScrollControlled: true,
builder: (builderContext) => SortPicker(
builder: (builderContext) => SortPicker<PostSortType>(
account: feedBloc.account,
title: l10n.sortOptions,
onSelect: (selected) async => context.read<FeedBloc>().add(FeedChangePostSortTypeEvent(selected.payload)),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import 'package:flutter/services.dart';

import 'package:flutter_bloc/flutter_bloc.dart';

import 'package:thunder/src/core/enums/post_sort_type.dart';
import 'package:thunder/src/features/account/account.dart';
import 'package:thunder/src/features/feed/feed.dart';
import 'package:thunder/src/shared/utils/constants.dart';
Expand Down Expand Up @@ -167,7 +168,7 @@ class FeedAppBarCommunityActions extends StatelessWidget {
showDragHandle: true,
context: context,
isScrollControlled: true,
builder: (builderContext) => SortPicker(
builder: (builderContext) => SortPicker<PostSortType>(
account: feedBloc.account,
title: l10n.sortOptions,
onSelect: (selected) async => context.read<FeedBloc>().add(FeedChangePostSortTypeEvent(selected.payload)),
Expand Down Expand Up @@ -211,7 +212,7 @@ class FeedAppBarUserActions extends StatelessWidget {
showDragHandle: true,
context: context,
isScrollControlled: true,
builder: (builderContext) => SortPicker(
builder: (builderContext) => SortPicker<PostSortType>(
account: feedBloc.account,
title: l10n.sortOptions,
onSelect: (selected) async => feedBloc.add(FeedChangePostSortTypeEvent(selected.payload)),
Expand Down Expand Up @@ -253,7 +254,7 @@ class FeedAppBarGeneralActions extends StatelessWidget {
showDragHandle: true,
context: context,
isScrollControlled: true,
builder: (builderContext) => SortPicker(
builder: (builderContext) => SortPicker<PostSortType>(
account: feedBloc.account,
title: l10n.sortOptions,
onSelect: (selected) async => feedBloc.add(FeedChangePostSortTypeEvent(selected.payload)),
Expand Down
4 changes: 2 additions & 2 deletions lib/src/features/inbox/presentation/pages/inbox_page.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:thunder/src/features/account/account.dart';
import 'package:thunder/src/core/enums/comment_sort_type.dart';
import 'package:thunder/src/features/inbox/inbox.dart';
import 'package:thunder/src/shared/comment_sort_picker.dart';
import 'package:thunder/src/shared/sort_picker.dart';
import 'package:thunder/src/shared/dialogs.dart';
import 'package:thunder/src/shared/snackbar.dart';
import 'package:thunder/src/shared/widgets/thunder_popup_menu_item.dart';
Expand Down Expand Up @@ -76,7 +76,7 @@ class _InboxPageState extends State<InboxPage> with SingleTickerProviderStateMix
showModalBottomSheet<void>(
showDragHandle: true,
context: context,
builder: (builderContext) => CommentSortPicker(
builder: (builderContext) => SortPicker<CommentSortType>(
account: inboxBloc.account,
title: l10n.sortOptions,
onSelect: (selected) async {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import 'package:equatable/equatable.dart';

import 'package:thunder/src/core/enums/meta_search_type.dart';
import 'package:thunder/src/core/enums/post_sort_type.dart';
import 'package:thunder/src/core/enums/search_sort_type.dart';

abstract class InstancePageEvent extends Equatable {
const InstancePageEvent();
Expand All @@ -12,7 +12,7 @@ abstract class InstancePageEvent extends Equatable {

class GetInstanceCommunities extends InstancePageEvent {
final int? page;
final PostSortType sortType;
final SearchSortType sortType;
final String? query;

const GetInstanceCommunities({this.page, required this.sortType, this.query});
Expand All @@ -23,7 +23,7 @@ class GetInstanceCommunities extends InstancePageEvent {

class GetInstanceUsers extends InstancePageEvent {
final int? page;
final PostSortType sortType;
final SearchSortType sortType;
final String? query;

const GetInstanceUsers({this.page, required this.sortType, this.query});
Expand All @@ -34,7 +34,7 @@ class GetInstanceUsers extends InstancePageEvent {

class GetInstancePosts extends InstancePageEvent {
final int? page;
final PostSortType sortType;
final SearchSortType sortType;
final String? query;

const GetInstancePosts({this.page, required this.sortType, this.query});
Expand All @@ -45,7 +45,7 @@ class GetInstancePosts extends InstancePageEvent {

class GetInstanceComments extends InstancePageEvent {
final int? page;
final PostSortType sortType;
final SearchSortType sortType;
final String? query;

const GetInstanceComments({this.page, required this.sortType, this.query});
Expand Down
40 changes: 20 additions & 20 deletions lib/src/features/instance/presentation/pages/instance_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import 'package:flutter_bloc/flutter_bloc.dart';

import 'package:thunder/src/app/utils/global_context.dart';
import 'package:thunder/src/core/enums/meta_search_type.dart';
import 'package:thunder/src/core/enums/post_sort_type.dart';
import 'package:thunder/src/core/enums/search_sort_type.dart';
import 'package:thunder/src/core/models/models.dart';
import 'package:thunder/src/features/account/account.dart';
import 'package:thunder/src/features/feed/feed.dart';
Expand Down Expand Up @@ -35,7 +35,7 @@ class _InstancePageState extends State<InstancePage> with SingleTickerProviderSt
late final TabController _tabController;

/// The post sort type to use
PostSortType postSortType = PostSortType.topAll;
SearchSortType searchSortType = SearchSortType.topAll;

/// Context for [_onScroll] to use to find the proper cubit
BuildContext? buildContext;
Expand Down Expand Up @@ -69,19 +69,19 @@ class _InstancePageState extends State<InstancePage> with SingleTickerProviderSt
switch (_tabController.index) {
case 1:
bloc.add(ResetInstanceTabs(excludeType: MetaSearchType.communities));
bloc.add(GetInstanceCommunities(page: 1, sortType: postSortType, query: query));
bloc.add(GetInstanceCommunities(page: 1, sortType: searchSortType, query: query));
break;
case 2:
bloc.add(ResetInstanceTabs(excludeType: MetaSearchType.users));
bloc.add(GetInstanceUsers(page: 1, sortType: postSortType, query: query));
bloc.add(GetInstanceUsers(page: 1, sortType: searchSortType, query: query));
break;
case 3:
bloc.add(ResetInstanceTabs(excludeType: MetaSearchType.posts));
bloc.add(GetInstancePosts(page: 1, sortType: postSortType, query: query));
bloc.add(GetInstancePosts(page: 1, sortType: searchSortType, query: query));
break;
case 4:
bloc.add(ResetInstanceTabs(excludeType: MetaSearchType.comments));
bloc.add(GetInstanceComments(page: 1, sortType: postSortType, query: query));
bloc.add(GetInstanceComments(page: 1, sortType: searchSortType, query: query));
break;
default:
bloc.add(const ResetInstanceTabs(excludeType: null));
Expand All @@ -97,16 +97,16 @@ class _InstancePageState extends State<InstancePage> with SingleTickerProviderSt

switch (_tabController.index) {
case 1:
if (bloc.state.communities.items.isEmpty) bloc.add(GetInstanceCommunities(sortType: postSortType, query: query));
if (bloc.state.communities.items.isEmpty) bloc.add(GetInstanceCommunities(sortType: searchSortType, query: query));
break;
case 2:
if (bloc.state.users.items.isEmpty) bloc.add(GetInstanceUsers(sortType: postSortType, query: query));
if (bloc.state.users.items.isEmpty) bloc.add(GetInstanceUsers(sortType: searchSortType, query: query));
break;
case 3:
if (bloc.state.posts.items.isEmpty) bloc.add(GetInstancePosts(sortType: postSortType, query: query));
if (bloc.state.posts.items.isEmpty) bloc.add(GetInstancePosts(sortType: searchSortType, query: query));
break;
case 4:
if (bloc.state.comments.items.isEmpty) bloc.add(GetInstanceComments(sortType: postSortType, query: query));
if (bloc.state.comments.items.isEmpty) bloc.add(GetInstanceComments(sortType: searchSortType, query: query));
break;
}
}
Expand Down Expand Up @@ -139,10 +139,10 @@ class _InstancePageState extends State<InstancePage> with SingleTickerProviderSt
handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context),
sliver: InstancePageAppBar(
instance: widget.instance,
postSortType: postSortType,
searchSortType: searchSortType,
account: account,
onSortSelected: (sortType) {
setState(() => postSortType = sortType);
setState(() => searchSortType = sortType);
_onRefresh();
},
onQueryChanged: (query) {
Expand Down Expand Up @@ -213,26 +213,26 @@ class _InstancePageState extends State<InstancePage> with SingleTickerProviderSt
InstanceCommunityTab(
account: account,
query: query,
postSortType: postSortType,
onRetry: () => context.read<InstancePageBloc>().add(GetInstanceCommunities(sortType: postSortType, query: query)),
searchSortType: searchSortType,
onRetry: () => context.read<InstancePageBloc>().add(GetInstanceCommunities(sortType: searchSortType, query: query)),
),
InstanceUserTab(
account: account,
query: query,
postSortType: postSortType,
onRetry: () => context.read<InstancePageBloc>().add(GetInstanceUsers(sortType: postSortType, query: query)),
searchSortType: searchSortType,
onRetry: () => context.read<InstancePageBloc>().add(GetInstanceUsers(sortType: searchSortType, query: query)),
),
InstancePostTab(
account: account,
query: query,
postSortType: postSortType,
onRetry: () => context.read<InstancePageBloc>().add(GetInstancePosts(sortType: postSortType, query: query)),
searchSortType: searchSortType,
onRetry: () => context.read<InstancePageBloc>().add(GetInstancePosts(sortType: searchSortType, query: query)),
),
InstanceCommentTab(
account: account,
query: query,
postSortType: postSortType,
onRetry: () => context.read<InstancePageBloc>().add(GetInstanceComments(sortType: postSortType, query: query)),
searchSortType: searchSortType,
onRetry: () => context.read<InstancePageBloc>().add(GetInstanceComments(sortType: searchSortType, query: query)),
),
],
),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import 'package:flutter_bloc/flutter_bloc.dart';

import 'package:thunder/src/app/utils/global_context.dart';
import 'package:thunder/src/app/utils/navigation.dart';
import 'package:thunder/src/core/enums/post_sort_type.dart';
import 'package:thunder/src/core/enums/search_sort_type.dart';
import 'package:thunder/src/core/enums/threadiverse_platform.dart';
import 'package:thunder/src/core/models/models.dart';
import 'package:thunder/src/features/account/account.dart';
Expand All @@ -23,13 +23,13 @@ class InstancePageAppBar extends StatefulWidget {
final ThunderInstanceInfo instance;

/// The sort type for the instance's data.
final PostSortType postSortType;
final SearchSortType searchSortType;

/// The account being used.
final Account account;

/// Callback for when the sort type is changed.
final Function(PostSortType sortType) onSortSelected;
final Function(SearchSortType sortType) onSortSelected;

/// Widget to be displayed at the bottom of the app bar.
final PreferredSizeWidget? bottom;
Expand All @@ -40,7 +40,7 @@ class InstancePageAppBar extends StatefulWidget {
const InstancePageAppBar({
super.key,
required this.instance,
required this.postSortType,
required this.searchSortType,
required this.account,
required this.onSortSelected,
required this.onQueryChanged,
Expand Down Expand Up @@ -107,13 +107,13 @@ class _InstancePageAppBarState extends State<InstancePageAppBar> {
showDragHandle: true,
context: context,
isScrollControlled: true,
builder: (builderContext) => SortPicker(
builder: (builderContext) => SortPicker<SearchSortType>(
account: account,
title: l10n.sortOptions,
onSelect: (selected) async {
widget.onSortSelected(selected.payload);
},
previouslySelected: widget.postSortType,
previouslySelected: widget.searchSortType,
),
);
},
Expand Down
Loading