Skip to content

Commit fa9f56c

Browse files
committed
feat(content_management): add no results UI when filters are active
- Implement a new UI state for when no sources are found with active filters - Add a button to reset filters when no results are displayed - Introduce a private method _areFiltersActive to check filter state - Update build method to handle the new UI logic
1 parent d5d08d4 commit fa9f56c

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

lib/content_management/view/sources_page.dart

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,25 @@ class _SourcesPageState extends State<SourcesPage> {
3939
);
4040
}
4141

42+
/// Checks if any filters are currently active in the SourcesFilterBloc.
43+
bool _areFiltersActive(SourcesFilterState state) {
44+
return state.searchQuery.isNotEmpty ||
45+
state.selectedStatus != ContentStatus.active ||
46+
state.selectedSourceTypes.isNotEmpty ||
47+
state.selectedLanguageCodes.isNotEmpty ||
48+
state.selectedHeadquartersCountryIds.isNotEmpty;
49+
}
50+
4251
@override
4352
Widget build(BuildContext context) {
4453
final l10n = AppLocalizationsX(context).l10n;
4554
return Padding(
4655
padding: const EdgeInsets.all(AppSpacing.lg),
4756
child: BlocBuilder<ContentManagementBloc, ContentManagementState>(
4857
builder: (context, state) {
58+
final sourcesFilterState = context.watch<SourcesFilterBloc>().state;
59+
final filtersActive = _areFiltersActive(sourcesFilterState);
60+
4961
if (state.sourcesStatus == ContentManagementStatus.loading &&
5062
state.sources.isEmpty) {
5163
return LoadingStateWidget(
@@ -73,6 +85,29 @@ class _SourcesPageState extends State<SourcesPage> {
7385
}
7486

7587
if (state.sources.isEmpty) {
88+
if (filtersActive) {
89+
return Center(
90+
child: Column(
91+
mainAxisAlignment: MainAxisAlignment.center,
92+
children: [
93+
Text(
94+
l10n.noResultsWithCurrentFilters,
95+
style: Theme.of(context).textTheme.titleMedium,
96+
textAlign: TextAlign.center,
97+
),
98+
const SizedBox(height: AppSpacing.lg),
99+
ElevatedButton(
100+
onPressed: () {
101+
context.read<SourcesFilterBloc>().add(
102+
const SourcesFilterReset(),
103+
);
104+
},
105+
child: Text(l10n.resetFiltersButtonText),
106+
),
107+
],
108+
),
109+
);
110+
}
76111
return Center(child: Text(l10n.noSourcesFound));
77112
}
78113

0 commit comments

Comments
 (0)