Skip to content

Commit 1de5469

Browse files
committed
feat: enhance DashboardBloc to handle entity updates and manage subscriptions
1 parent dfacc13 commit 1de5469

File tree

1 file changed

+28
-3
lines changed

1 file changed

+28
-3
lines changed

lib/dashboard/bloc/dashboard_bloc.dart

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1+
import 'dart:async';
2+
13
import 'package:bloc/bloc.dart';
24
import 'package:core/core.dart';
35
import 'package:data_repository/data_repository.dart';
46
import 'package:equatable/equatable.dart';
7+
import 'package:stream_transform/stream_transform.dart';
58

69
part 'dashboard_event.dart';
710
part 'dashboard_state.dart';
@@ -12,14 +15,36 @@ class DashboardBloc extends Bloc<DashboardEvent, DashboardState> {
1215
DashboardBloc({
1316
required DataRepository<DashboardSummary> dashboardSummaryRepository,
1417
required DataRepository<Headline> headlinesRepository,
15-
}) : _dashboardSummaryRepository = dashboardSummaryRepository,
16-
_headlinesRepository = headlinesRepository,
17-
super(const DashboardState()) {
18+
required DataRepository<Topic> topicsRepository,
19+
required DataRepository<Source> sourcesRepository,
20+
}) : _dashboardSummaryRepository = dashboardSummaryRepository,
21+
_headlinesRepository = headlinesRepository,
22+
super(const DashboardState()) {
1823
on<DashboardSummaryLoaded>(_onDashboardSummaryLoaded);
24+
on<_DashboardEntityUpdated>(_onDashboardEntityUpdated);
25+
26+
_entityUpdatedSubscription = headlinesRepository.entityUpdated
27+
.merge(topicsRepository.entityUpdated)
28+
.merge(sourcesRepository.entityUpdated)
29+
.listen((_) => add(const _DashboardEntityUpdated()));
1930
}
2031

2132
final DataRepository<DashboardSummary> _dashboardSummaryRepository;
2233
final DataRepository<Headline> _headlinesRepository;
34+
late final StreamSubscription<void> _entityUpdatedSubscription;
35+
36+
@override
37+
Future<void> close() {
38+
_entityUpdatedSubscription.cancel();
39+
return super.close();
40+
}
41+
42+
void _onDashboardEntityUpdated(
43+
_DashboardEntityUpdated event,
44+
Emitter<DashboardState> emit,
45+
) {
46+
add(DashboardSummaryLoaded());
47+
}
2348

2449
Future<void> _onDashboardSummaryLoaded(
2550
DashboardSummaryLoaded event,

0 commit comments

Comments
 (0)