Skip to content

Commit 562a6c1

Browse files
committed
feat(dashboard): enhances the DashboardBloc to fetch the application's configuration data.
- The DashboardState now includes an appConfig property to hold the fetched configuration. - The DashboardBloc has been updated to inject the HtDataRepository<AppConfig>. - The data loading logic now fetches the AppConfig concurrently with the summary and recent headlines, improving efficiency. - The DashboardBloc provider in app.dart has been updated to supply the newly required appConfigRepository. This change prepares the dashboard to display system status information in the UI.
1 parent 5f3b14e commit 562a6c1

File tree

3 files changed

+26
-5
lines changed

3 files changed

+26
-5
lines changed

lib/app/view/app.dart

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,9 @@ class App extends StatelessWidget {
105105
),
106106
BlocProvider(
107107
create: (context) => DashboardBloc(
108-
dashboardSummaryRepository:
109-
context.read<HtDataRepository<DashboardSummary>>(),
108+
dashboardSummaryRepository: context
109+
.read<HtDataRepository<DashboardSummary>>(),
110+
appConfigRepository: context.read<HtDataRepository<AppConfig>>(),
110111
headlinesRepository: context.read<HtDataRepository<Headline>>(),
111112
),
112113
),

lib/dashboard/bloc/dashboard_bloc.dart

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,17 @@ class DashboardBloc extends Bloc<DashboardEvent, DashboardState> {
1111
/// {@macro dashboard_bloc}
1212
DashboardBloc({
1313
required HtDataRepository<DashboardSummary> dashboardSummaryRepository,
14+
required HtDataRepository<AppConfig> appConfigRepository,
1415
required HtDataRepository<Headline> headlinesRepository,
1516
}) : _dashboardSummaryRepository = dashboardSummaryRepository,
17+
_appConfigRepository = appConfigRepository,
1618
_headlinesRepository = headlinesRepository,
1719
super(const DashboardState()) {
1820
on<DashboardSummaryLoaded>(_onDashboardSummaryLoaded);
1921
}
2022

2123
final HtDataRepository<DashboardSummary> _dashboardSummaryRepository;
24+
final HtDataRepository<AppConfig> _appConfigRepository;
2225
final HtDataRepository<Headline> _headlinesRepository;
2326

2427
Future<void> _onDashboardSummaryLoaded(
@@ -27,22 +30,29 @@ class DashboardBloc extends Bloc<DashboardEvent, DashboardState> {
2730
) async {
2831
emit(state.copyWith(status: DashboardStatus.loading));
2932
try {
30-
// Fetch summary and recent headlines concurrently
31-
final [summaryResponse, recentHeadlinesResponse] = await Future.wait([
33+
// Fetch summary, app config, and recent headlines concurrently
34+
final [
35+
summaryResponse,
36+
appConfigResponse,
37+
recentHeadlinesResponse,
38+
] = await Future.wait([
3239
_dashboardSummaryRepository.read(id: 'summary'),
40+
_appConfigRepository.read(id: 'app_config'),
3341
_headlinesRepository.readAllByQuery(
3442
const {'sortBy': 'createdAt', 'sortOrder': 'desc'},
3543
limit: 5,
3644
),
3745
]);
3846

3947
final summary = summaryResponse as DashboardSummary;
48+
final appConfig = appConfigResponse as AppConfig;
4049
final recentHeadlines =
4150
(recentHeadlinesResponse as PaginatedResponse<Headline>).items;
4251
emit(
4352
state.copyWith(
4453
status: DashboardStatus.success,
4554
summary: summary,
55+
appConfig: appConfig,
4656
recentHeadlines: recentHeadlines,
4757
),
4858
);

lib/dashboard/bloc/dashboard_state.dart

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,29 +20,39 @@ final class DashboardState extends Equatable {
2020
const DashboardState({
2121
this.status = DashboardStatus.initial,
2222
this.summary,
23+
this.appConfig,
2324
this.recentHeadlines = const [],
2425
this.errorMessage,
2526
});
2627

2728
final DashboardStatus status;
2829
final DashboardSummary? summary;
30+
final AppConfig? appConfig;
2931
final List<Headline> recentHeadlines;
3032
final String? errorMessage;
3133

3234
DashboardState copyWith({
3335
DashboardStatus? status,
3436
DashboardSummary? summary,
37+
AppConfig? appConfig,
3538
List<Headline>? recentHeadlines,
3639
String? errorMessage,
3740
}) {
3841
return DashboardState(
3942
status: status ?? this.status,
4043
summary: summary ?? this.summary,
44+
appConfig: appConfig ?? this.appConfig,
4145
recentHeadlines: recentHeadlines ?? this.recentHeadlines,
4246
errorMessage: errorMessage ?? this.errorMessage,
4347
);
4448
}
4549

4650
@override
47-
List<Object?> get props => [status, summary, recentHeadlines, errorMessage];
51+
List<Object?> get props => [
52+
status,
53+
summary,
54+
appConfig,
55+
recentHeadlines,
56+
errorMessage,
57+
];
4858
}

0 commit comments

Comments
 (0)