1+ import 'dart:async' ;
2+
13import 'package:bloc/bloc.dart' ;
24import 'package:core/core.dart' ;
35import 'package:data_repository/data_repository.dart' ;
46import 'package:equatable/equatable.dart' ;
7+ import 'package:stream_transform/stream_transform.dart' ;
58
69part 'dashboard_event.dart' ;
710part '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