Skip to content

Commit 143e87e

Browse files
committed
refactor(dashboard): remove app config from dashboard
- Removed app config from dashboard bloc - Removed app config from dashboard state - Removed app config from dashboard UI - Simplified data fetching logic - Improved code readability
1 parent 985f093 commit 143e87e

File tree

4 files changed

+4
-94
lines changed

4 files changed

+4
-94
lines changed

lib/app/view/app.dart

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,6 @@ class App extends StatelessWidget {
112112
create: (context) => DashboardBloc(
113113
dashboardSummaryRepository: context
114114
.read<HtDataRepository<DashboardSummary>>(),
115-
appConfigRepository: context
116-
.read<HtDataRepository<RemoteConfig>>(),
117115
headlinesRepository: context.read<HtDataRepository<Headline>>(),
118116
),
119117
),

lib/dashboard/bloc/dashboard_bloc.dart

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import 'package:bloc/bloc.dart';
22
import 'package:equatable/equatable.dart';
33
import 'package:ht_data_repository/ht_data_repository.dart';
4-
import 'package:ht_shared/ht_shared.dart';
4+
import 'package:ht_shared/ht_shared.dart';
55

66
part 'dashboard_event.dart';
77
part 'dashboard_state.dart';
@@ -11,17 +11,14 @@ class DashboardBloc extends Bloc<DashboardEvent, DashboardState> {
1111
/// {@macro dashboard_bloc}
1212
DashboardBloc({
1313
required HtDataRepository<DashboardSummary> dashboardSummaryRepository,
14-
required HtDataRepository<RemoteConfig> appConfigRepository,
1514
required HtDataRepository<Headline> headlinesRepository,
1615
}) : _dashboardSummaryRepository = dashboardSummaryRepository,
17-
_appConfigRepository = appConfigRepository,
1816
_headlinesRepository = headlinesRepository,
1917
super(const DashboardState()) {
2018
on<DashboardSummaryLoaded>(_onDashboardSummaryLoaded);
2119
}
2220

2321
final HtDataRepository<DashboardSummary> _dashboardSummaryRepository;
24-
final HtDataRepository<RemoteConfig> _appConfigRepository;
2522
final HtDataRepository<Headline> _headlinesRepository;
2623

2724
Future<void> _onDashboardSummaryLoaded(
@@ -30,29 +27,25 @@ class DashboardBloc extends Bloc<DashboardEvent, DashboardState> {
3027
) async {
3128
emit(state.copyWith(status: DashboardStatus.loading));
3229
try {
33-
// Fetch summary, app config, and recent headlines concurrently
30+
// Fetch summary and recent headlines concurrently
3431
final [
3532
summaryResponse,
36-
appConfigResponse,
3733
recentHeadlinesResponse,
3834
] = await Future.wait([
3935
_dashboardSummaryRepository.read(id: kDashboardSummaryId),
40-
_appConfigRepository.read(id: kRemoteConfigId),
4136
_headlinesRepository.readAll(
4237
pagination: const PaginationOptions(limit: 5),
4338
sort: const [SortOption('createdAt', SortOrder.desc)],
4439
),
4540
]);
4641

4742
final summary = summaryResponse as DashboardSummary;
48-
final appConfig = appConfigResponse as RemoteConfig;
4943
final recentHeadlines =
5044
(recentHeadlinesResponse as PaginatedResponse<Headline>).items;
5145
emit(
5246
state.copyWith(
5347
status: DashboardStatus.success,
5448
summary: summary,
55-
appConfig: appConfig,
5649
recentHeadlines: recentHeadlines,
5750
),
5851
);

lib/dashboard/bloc/dashboard_state.dart

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,28 +20,24 @@ final class DashboardState extends Equatable {
2020
const DashboardState({
2121
this.status = DashboardStatus.initial,
2222
this.summary,
23-
this.appConfig,
2423
this.recentHeadlines = const [],
2524
this.exception,
2625
});
2726

2827
final DashboardStatus status;
2928
final DashboardSummary? summary;
30-
final RemoteConfig? appConfig;
3129
final List<Headline> recentHeadlines;
3230
final HtHttpException? exception;
3331

3432
DashboardState copyWith({
3533
DashboardStatus? status,
3634
DashboardSummary? summary,
37-
RemoteConfig? appConfig,
3835
List<Headline>? recentHeadlines,
3936
HtHttpException? exception,
4037
}) {
4138
return DashboardState(
4239
status: status ?? this.status,
4340
summary: summary ?? this.summary,
44-
appConfig: appConfig ?? this.appConfig,
4541
recentHeadlines: recentHeadlines ?? this.recentHeadlines,
4642
exception: exception ?? this.exception,
4743
);
@@ -51,7 +47,6 @@ final class DashboardState extends Equatable {
5147
List<Object?> get props => [
5248
status,
5349
summary,
54-
appConfig,
5550
recentHeadlines,
5651
exception,
5752
];

lib/dashboard/view/dashboard_page.dart

Lines changed: 2 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import 'package:flutter/material.dart';
22
import 'package:flutter_bloc/flutter_bloc.dart';
33
import 'package:go_router/go_router.dart';
44
import 'package:ht_dashboard/dashboard/bloc/dashboard_bloc.dart';
5-
import 'package:ht_dashboard/l10n/app_localizations.dart';
65
import 'package:ht_dashboard/l10n/l10n.dart';
76
import 'package:ht_dashboard/router/routes.dart';
87
import 'package:ht_dashboard/shared/shared.dart';
@@ -50,10 +49,8 @@ class _DashboardPageState extends State<DashboardPage> {
5049
);
5150
}
5251
if (state.status == DashboardStatus.success &&
53-
state.summary != null &&
54-
state.appConfig != null) {
52+
state.summary != null) {
5553
final summary = state.summary!;
56-
final appConfig = state.appConfig!;
5754
final recentHeadlines = state.recentHeadlines;
5855
return ListView(
5956
padding: const EdgeInsets.all(AppSpacing.lg),
@@ -113,15 +110,7 @@ class _DashboardPageState extends State<DashboardPage> {
113110

114111
final mainContent = [
115112
_RecentHeadlinesCard(headlines: recentHeadlines),
116-
Column(
117-
children: [
118-
_SystemStatusCard(
119-
appStatus: appConfig.appStatus,
120-
),
121-
const SizedBox(height: AppSpacing.lg),
122-
const _QuickActionsCard(),
123-
],
124-
),
113+
const _QuickActionsCard(),
125114
];
126115

127116
if (isWide) {
@@ -155,71 +144,6 @@ class _DashboardPageState extends State<DashboardPage> {
155144
}
156145
}
157146

158-
/// A card to display the current operational status of the application.
159-
class _SystemStatusCard extends StatelessWidget {
160-
const _SystemStatusCard({required this.appStatus});
161-
162-
final AppStatus appStatus;
163-
164-
@override
165-
Widget build(BuildContext context) {
166-
final l10n = context.l10n;
167-
final theme = Theme.of(context);
168-
169-
final (icon, color, text) = _getStatusDetails(appStatus, l10n, theme);
170-
171-
return Card(
172-
child: Padding(
173-
padding: const EdgeInsets.all(AppSpacing.lg),
174-
child: Column(
175-
crossAxisAlignment: CrossAxisAlignment.start,
176-
children: [
177-
Text(l10n.systemStatus, style: theme.textTheme.titleLarge),
178-
const SizedBox(height: AppSpacing.md),
179-
Row(
180-
children: [
181-
Icon(icon, color: color, size: 24),
182-
const SizedBox(width: AppSpacing.sm),
183-
Text(
184-
text,
185-
style: theme.textTheme.titleMedium?.copyWith(color: color),
186-
),
187-
],
188-
),
189-
],
190-
),
191-
),
192-
);
193-
}
194-
195-
/// Returns the appropriate icon, color, and text for a given status.
196-
(IconData, Color, String) _getStatusDetails(
197-
AppStatus appStatus,
198-
AppLocalizations l10n,
199-
ThemeData theme,
200-
) {
201-
if (appStatus.isUnderMaintenance) {
202-
return (
203-
Icons.warning_amber_outlined,
204-
theme.colorScheme.tertiary,
205-
l10n.appStatusMaintenance,
206-
);
207-
} else if (appStatus.isLatestVersionOnly) {
208-
return (
209-
Icons.cancel_outlined,
210-
theme.colorScheme.error,
211-
l10n.appStatusDisabled,
212-
);
213-
} else {
214-
return (
215-
Icons.check_circle_outline,
216-
theme.colorScheme.primary,
217-
l10n.appStatusActive,
218-
);
219-
}
220-
}
221-
}
222-
223147
/// A card providing quick navigation to common administrative tasks.
224148
class _QuickActionsCard extends StatelessWidget {
225149
const _QuickActionsCard();

0 commit comments

Comments
 (0)