Skip to content

Commit 5489427

Browse files
committed
feat(feed): track account action impressions
- Added tracking for AccountAction - Tracks when action is displayed - Prevents repeated impressions
1 parent 5ee4eb0 commit 5489427

File tree

1 file changed

+33
-7
lines changed

1 file changed

+33
-7
lines changed

lib/headlines-feed/bloc/headlines_feed_bloc.dart

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -99,12 +99,18 @@ class HeadlinesFeedBloc extends Bloc<HeadlinesFeedEvent, HeadlinesFeedState> {
9999

100100
emit(
101101
HeadlinesFeedLoaded(
102-
feedItems: processedFeedItems, // Changed
103-
hasMore: headlineResponse.hasMore, // Based on original headline fetch
102+
feedItems: processedFeedItems,
103+
hasMore: headlineResponse.hasMore,
104104
cursor: headlineResponse.cursor,
105-
filter: event.filter, // Store the applied filter
105+
filter: event.filter,
106106
),
107107
);
108+
109+
// Dispatch event if AccountAction was injected
110+
if (processedFeedItems.any((item) => item is AccountAction) &&
111+
_appBloc.state.user?.id != null) {
112+
_appBloc.add(AppUserAccountActionShown(userId: _appBloc.state.user!.id));
113+
}
108114
} on HtHttpException catch (e) {
109115
emit(HeadlinesFeedError(message: e.message));
110116
} catch (e, st) {
@@ -146,11 +152,17 @@ class HeadlinesFeedBloc extends Bloc<HeadlinesFeedEvent, HeadlinesFeedState> {
146152

147153
emit(
148154
HeadlinesFeedLoaded(
149-
feedItems: processedFeedItems, // Changed
155+
feedItems: processedFeedItems,
150156
hasMore: headlineResponse.hasMore,
151157
cursor: headlineResponse.cursor,
152158
),
153159
);
160+
161+
// Dispatch event if AccountAction was injected
162+
if (processedFeedItems.any((item) => item is AccountAction) &&
163+
_appBloc.state.user?.id != null) {
164+
_appBloc.add(AppUserAccountActionShown(userId: _appBloc.state.user!.id));
165+
}
154166
} on HtHttpException catch (e) {
155167
emit(HeadlinesFeedError(message: e.message));
156168
} catch (e, st) {
@@ -233,16 +245,24 @@ class HeadlinesFeedBloc extends Bloc<HeadlinesFeedEvent, HeadlinesFeedState> {
233245
currentFeedItemCount: currentFeedItemCountForInjector,
234246
);
235247

248+
final resultingFeedItems = isPaginating
249+
? (List.of(currentFeedItems)..addAll(newProcessedFeedItems))
250+
: newProcessedFeedItems;
251+
236252
emit(
237253
HeadlinesFeedLoaded(
238-
feedItems: isPaginating
239-
? (List.of(currentFeedItems)..addAll(newProcessedFeedItems))
240-
: newProcessedFeedItems,
254+
feedItems: resultingFeedItems,
241255
hasMore: headlineResponse.hasMore,
242256
cursor: headlineResponse.cursor,
243257
filter: currentFilter,
244258
),
245259
);
260+
261+
// Dispatch event if AccountAction was injected
262+
if (newProcessedFeedItems.any((item) => item is AccountAction) &&
263+
_appBloc.state.user?.id != null) {
264+
_appBloc.add(AppUserAccountActionShown(userId: _appBloc.state.user!.id));
265+
}
246266
} on HtHttpException catch (e) {
247267
emit(HeadlinesFeedError(message: e.message));
248268
} catch (e, st) {
@@ -310,6 +330,12 @@ class HeadlinesFeedBloc extends Bloc<HeadlinesFeedEvent, HeadlinesFeedState> {
310330
filter: currentFilter,
311331
),
312332
);
333+
334+
// Dispatch event if AccountAction was injected
335+
if (processedFeedItems.any((item) => item is AccountAction) &&
336+
_appBloc.state.user?.id != null) {
337+
_appBloc.add(AppUserAccountActionShown(userId: _appBloc.state.user!.id));
338+
}
313339
} on HtHttpException catch (e) {
314340
emit(HeadlinesFeedError(message: e.message));
315341
} catch (e, st) {

0 commit comments

Comments
 (0)