Skip to content

Commit 99e9bd1

Browse files
committed
feat(sources_filter): add filter events
- Added new filter events - Toggles for country, type, source - Event to clear filters
1 parent 17e2c48 commit 99e9bd1

File tree

1 file changed

+51
-14
lines changed

1 file changed

+51
-14
lines changed
Lines changed: 51 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,59 @@
11
part of 'sources_filter_bloc.dart';
22

3-
/// {@template sources_filter_event}
4-
/// Base class for events related to fetching and managing source filters.
5-
/// {@endtemplate}
6-
sealed class SourcesFilterEvent extends Equatable {
7-
/// {@macro sources_filter_event}
3+
abstract class SourcesFilterEvent extends Equatable {
84
const SourcesFilterEvent();
95

106
@override
11-
List<Object> get props => [];
7+
List<Object?> get props => [];
128
}
139

14-
/// {@template sources_filter_requested}
15-
/// Event triggered to request the initial list of sources.
16-
/// {@endtemplate}
17-
final class SourcesFilterRequested extends SourcesFilterEvent {}
10+
class LoadSourceFilterData extends SourcesFilterEvent {
11+
const LoadSourceFilterData({this.initialSelectedSources = const []});
1812

19-
/// {@template sources_filter_load_more_requested}
20-
/// Event triggered to request the next page of sources for pagination.
21-
/// {@endtemplate}
22-
final class SourcesFilterLoadMoreRequested extends SourcesFilterEvent {}
13+
final List<Source> initialSelectedSources;
14+
15+
@override
16+
List<Object?> get props => [initialSelectedSources];
17+
}
18+
19+
class CountryCapsuleToggled extends SourcesFilterEvent {
20+
const CountryCapsuleToggled(this.countryIsoCode);
21+
22+
/// If countryIsoCode is empty, it implies "All Countries".
23+
final String countryIsoCode;
24+
25+
@override
26+
List<Object> get props => [countryIsoCode];
27+
}
28+
29+
class AllSourceTypesCapsuleToggled extends SourcesFilterEvent {
30+
const AllSourceTypesCapsuleToggled();
31+
}
32+
33+
class SourceTypeCapsuleToggled extends SourcesFilterEvent {
34+
const SourceTypeCapsuleToggled(this.sourceType);
35+
36+
final SourceType sourceType;
37+
38+
@override
39+
List<Object> get props => [sourceType];
40+
}
41+
42+
class SourceCheckboxToggled extends SourcesFilterEvent {
43+
const SourceCheckboxToggled(this.sourceId, this.isSelected);
44+
45+
final String sourceId;
46+
final bool isSelected;
47+
48+
@override
49+
List<Object> get props => [sourceId, isSelected];
50+
}
51+
52+
class ClearSourceFiltersRequested extends SourcesFilterEvent {
53+
const ClearSourceFiltersRequested();
54+
}
55+
56+
// Internal event - not part of public API, hence leading underscore
57+
class _FetchFilteredSourcesRequested extends SourcesFilterEvent {
58+
const _FetchFilteredSourcesRequested();
59+
}

0 commit comments

Comments
 (0)