Skip to content

Commit c4b5431

Browse files
authored
refactor(llc): Type-safe filter fields in queries (#19)
1 parent 7ea10bc commit c4b5431

File tree

87 files changed

+154
-290
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

87 files changed

+154
-290
lines changed

docs_code_snippets/03_02_querying_activities.dart

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// ignore_for_file: unused_local_variable, file_names
1+
// ignore_for_file: unused_local_variable, file_names, avoid_redundant_argument_values
22

33
import 'package:stream_feeds/stream_feeds.dart';
44

@@ -7,7 +7,7 @@ late Feed feed;
77

88
Future<void> activitySearchAndQueries() async {
99
final query = ActivitiesQuery(
10-
filter: Filter.equal(ActivitiesFilterField.type, 'post'),
10+
filter: const Filter.equal(ActivitiesFilterField.type, 'post'),
1111
sort: [ActivitiesSort.desc(ActivitiesSortField.createdAt)],
1212
limit: 10,
1313
);
@@ -18,7 +18,7 @@ Future<void> activitySearchAndQueries() async {
1818

1919
Future<void> queryActivitiesByText() async {
2020
// search for activities where the text includes the word 'popularity'.
21-
final query = ActivitiesQuery(
21+
const query = ActivitiesQuery(
2222
filter: Filter.equal(ActivitiesFilterField.text, 'popularity'),
2323
);
2424

@@ -28,7 +28,10 @@ Future<void> queryActivitiesByText() async {
2828

2929
Future<void> queryActivitiesBySearchData() async {
3030
// search for activities associated with the campaign ID 'spring-sale-2025'
31-
final searchValue = {'campaign': {'id': 'spring-sale-2025'}};
31+
final searchValue = {
32+
'campaign': {'id': 'spring-sale-2025'},
33+
};
34+
3235
final query = ActivitiesQuery(
3336
filter: Filter.contains(ActivitiesFilterField.searchData, searchValue),
3437
);
@@ -37,8 +40,11 @@ Future<void> queryActivitiesBySearchData() async {
3740
final activities = await activityList.get();
3841

3942
// search for activities where the campaign took place in a mall
40-
final query2 = ActivitiesQuery(
41-
filter: Filter.pathExists(ActivitiesFilterField.searchData, 'campaign.location.mall'),
43+
const query2 = ActivitiesQuery(
44+
filter: Filter.pathExists(
45+
ActivitiesFilterField.searchData,
46+
'campaign.location.mall',
47+
),
4248
);
4349

4450
final activityList2 = client.activityList(query2);

docs_code_snippets/04_01_feeds.dart

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,12 @@ Future<void> readingAFeed() async {
3636
}
3737

3838
Future<void> readingAFeedMoreOptions() async {
39-
final query = FeedQuery(
40-
fid: const FeedId(group: 'user', id: 'john'),
39+
const query = FeedQuery(
40+
fid: FeedId(group: 'user', id: 'john'),
4141
// filter activities with filter tag green
4242
activityFilter: Filter.in_(
4343
ActivitiesFilterField.filterTags,
44-
const ['green'],
44+
['green'],
4545
),
4646
activityLimit: 10,
4747
// additional data used for ranking
@@ -108,11 +108,9 @@ Future<void> filteringExamples() async {
108108
],
109109
);
110110
// Now read the feed, this will fetch activity 1 and 2
111-
final query = FeedQuery(
111+
const query = FeedQuery(
112112
fid: feedId,
113-
activityFilter: Filter.in_(ActivitiesFilterField.filterTags, const [
114-
'blue',
115-
]),
113+
activityFilter: Filter.in_(ActivitiesFilterField.filterTags, ['blue']),
116114
);
117115

118116
final feed = client.feedFromQuery(query);
@@ -123,20 +121,21 @@ Future<void> filteringExamples() async {
123121

124122
Future<void> moreComplexFilterExamples() async {
125123
// Get all the activities where tags contain "green" and type is "post" or tag contains "orange" and type is "activity"
126-
final query = FeedQuery(
127-
fid: const FeedId(group: 'user', id: 'john'),
124+
const query = FeedQuery(
125+
fid: FeedId(group: 'user', id: 'john'),
128126
activityFilter: Filter.or([
129127
Filter.and([
130-
Filter.in_(ActivitiesFilterField.filterTags, const ['green']),
128+
Filter.in_(ActivitiesFilterField.filterTags, ['green']),
131129
Filter.equal(ActivitiesFilterField.type, 'post'),
132130
]),
133131
Filter.and([
134-
Filter.in_(ActivitiesFilterField.filterTags, const ['orange']),
132+
Filter.in_(ActivitiesFilterField.filterTags, ['orange']),
135133
Filter.equal(ActivitiesFilterField.type, 'activity'),
136134
]),
137135
]),
138136
);
139137

138+
final feed = client.feedFromQuery(query);
140139
await feed.getOrCreate();
141140
final activities = feed.state.activities;
142141
}
@@ -199,7 +198,7 @@ Future<void> memberInvites() async {
199198

200199
Future<void> queryMyFeeds() async {
201200
final query = FeedsQuery(
202-
filter: Filter.equal(FeedsFilterField.createdById, 'john'),
201+
filter: const Filter.equal(FeedsFilterField.createdById, 'john'),
203202
sort: [FeedsSort.desc(FeedsSortField.createdAt)],
204203
limit: 10,
205204
watch: true,
@@ -217,15 +216,15 @@ Future<void> queryMyFeeds() async {
217216
}
218217

219218
Future<void> queryFeedsWhereIAmAMember() async {
220-
final query = FeedsQuery(
219+
const query = FeedsQuery(
221220
filter: Filter.contains(FeedsFilterField.members, 'john'),
222221
);
223222
final feedList = client.feedList(query);
224223
final feeds = await feedList.get();
225224
}
226225

227226
Future<void> queryFeedsByNameOrVisibility() async {
228-
final sportsQuery = FeedsQuery(
227+
const sportsQuery = FeedsQuery(
229228
filter: Filter.and([
230229
Filter.equal(FeedsFilterField.visibility, 'public'),
231230
Filter.query(FeedsFilterField.name, 'Sports'),
@@ -235,7 +234,7 @@ Future<void> queryFeedsByNameOrVisibility() async {
235234
final sportsFeedList = client.feedList(sportsQuery);
236235
final sportsFeeds = await sportsFeedList.get();
237236

238-
final techQuery = FeedsQuery(
237+
const techQuery = FeedsQuery(
239238
filter: Filter.and([
240239
Filter.equal(FeedsFilterField.visibility, 'public'),
241240
Filter.autoComplete(FeedsFilterField.description, 'tech'),
@@ -247,7 +246,7 @@ Future<void> queryFeedsByNameOrVisibility() async {
247246
}
248247

249248
Future<void> queryFeedsByCreatorName() async {
250-
final query = FeedsQuery(
249+
const query = FeedsQuery(
251250
filter: Filter.and([
252251
Filter.equal(FeedsFilterField.visibility, 'public'),
253252
Filter.query(FeedsFilterField.createdByName, 'Thompson'),

melos.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ command:
4646
stream_core:
4747
git:
4848
url: https://github.com/GetStream/stream-core-flutter.git
49-
ref: 5acdcb8e378548372f7dbb6326c518edcf832d10
49+
ref: 280b1045e39388668fd060439259831611b51b5a
5050
path: packages/stream_core
5151

5252
# List of all the dev_dependencies used in the project.

packages/stream_feeds/lib/src/generated/api/model/activity_added_event.freezed.dart

Lines changed: 0 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/stream_feeds/lib/src/generated/api/model/activity_deleted_event.freezed.dart

Lines changed: 0 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/stream_feeds/lib/src/generated/api/model/activity_mark_event.freezed.dart

Lines changed: 0 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/stream_feeds/lib/src/generated/api/model/activity_pinned_event.freezed.dart

Lines changed: 0 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/stream_feeds/lib/src/generated/api/model/activity_reaction_added_event.freezed.dart

Lines changed: 0 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/stream_feeds/lib/src/generated/api/model/activity_reaction_deleted_event.freezed.dart

Lines changed: 0 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/stream_feeds/lib/src/generated/api/model/activity_reaction_updated_event.freezed.dart

Lines changed: 0 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)