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,17 +15,39 @@ class DashboardBloc extends Bloc<DashboardEvent, DashboardState> {
1215 DashboardBloc ({
1316 required DataRepository <DashboardSummary > dashboardSummaryRepository,
1417 required DataRepository <Headline > headlinesRepository,
18+ required DataRepository <Topic > topicsRepository,
19+ required DataRepository <Source > sourcesRepository,
1520 }) : _dashboardSummaryRepository = dashboardSummaryRepository,
1621 _headlinesRepository = headlinesRepository,
1722 super (const DashboardState ()) {
18- on < DashboardSummaryLoaded > (_onDashboardSummaryLoaded);
23+ on < DashboardSummaryRequested > (_onDashboardSummaryRequested);
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 (DashboardSummaryRequested ());
47+ }
2348
24- Future <void > _onDashboardSummaryLoaded (
25- DashboardSummaryLoaded event,
49+ Future <void > _onDashboardSummaryRequested (
50+ DashboardSummaryRequested event,
2651 Emitter <DashboardState > emit,
2752 ) async {
2853 emit (state.copyWith (status: DashboardStatus .loading));
0 commit comments