Skip to content

Commit 6f5645c

Browse files
committed
feat(feed): add source type/country filtering
- Added country ISO code filtering - Added source type filtering - Updated HeadlineFilter model
1 parent c521661 commit 6f5645c

File tree

1 file changed

+28
-3
lines changed

1 file changed

+28
-3
lines changed

lib/headlines-feed/models/headline_filter.dart

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,12 @@ import 'package:ht_shared/ht_shared.dart';
66
/// {@endtemplate}
77
class HeadlineFilter extends Equatable {
88
/// {@macro headline_filter}
9-
const HeadlineFilter({this.categories, this.sources});
9+
const HeadlineFilter({
10+
this.categories,
11+
this.sources,
12+
this.selectedSourceCountryIsoCodes,
13+
this.selectedSourceSourceTypes,
14+
});
1015

1116
/// The list of selected category filters.
1217
/// Headlines matching *any* of these categories will be included (OR logic).
@@ -16,15 +21,35 @@ class HeadlineFilter extends Equatable {
1621
/// Headlines matching *any* of these sources will be included (OR logic).
1722
final List<Source>? sources;
1823

24+
/// The set of selected country ISO codes for source filtering.
25+
final Set<String>? selectedSourceCountryIsoCodes;
26+
27+
/// The set of selected source types for source filtering.
28+
final Set<SourceType>? selectedSourceSourceTypes;
29+
1930
@override
20-
List<Object?> get props => [categories, sources];
31+
List<Object?> get props => [
32+
categories,
33+
sources,
34+
selectedSourceCountryIsoCodes,
35+
selectedSourceSourceTypes,
36+
];
2137

2238
/// Creates a copy of this [HeadlineFilter] with the given fields
2339
/// replaced with the new values.
24-
HeadlineFilter copyWith({List<Category>? categories, List<Source>? sources}) {
40+
HeadlineFilter copyWith({
41+
List<Category>? categories,
42+
List<Source>? sources,
43+
Set<String>? selectedSourceCountryIsoCodes,
44+
Set<SourceType>? selectedSourceSourceTypes,
45+
}) {
2546
return HeadlineFilter(
2647
categories: categories ?? this.categories,
2748
sources: sources ?? this.sources,
49+
selectedSourceCountryIsoCodes: selectedSourceCountryIsoCodes ??
50+
this.selectedSourceCountryIsoCodes,
51+
selectedSourceSourceTypes:
52+
selectedSourceSourceTypes ?? this.selectedSourceSourceTypes,
2853
);
2954
}
3055
}

0 commit comments

Comments
 (0)