Skip to content

Commit 5bac7f2

Browse files
authored
Merge pull request #28 from headlines-toolkit/debug_integrate_proper_exceptions_l10n_messages
Debug integrate proper exceptions l10n messages
2 parents 0cb2f77 + a6e5c1e commit 5bac7f2

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+510
-435
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ Control the behavior and appearance of the `ht_main` mobile application remotely
3535
#### 📊 **Intuitive User Interface**
3636
Built with Flutter, the dashboard provides a responsive and user-friendly
3737
experience across various web browsers and screen sizes.
38+
* **User-Friendly Error Handling:** Displays clear, localized error messages for a smooth and understandable user experience when issues arise.
3839
* **Benefit for you:** A modern, maintainable, and visually appealing
3940
interface for your administrative tasks. ✨
4041

analysis_options.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
analyzer:
22
errors:
3+
avoid_bool_literals_in_conditional_expressions: ignore
34
avoid_catches_without_on_clauses: ignore
45
avoid_print: ignore
56
avoid_redundant_argument_values: ignore

lib/app/view/app.dart

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import 'package:ht_dashboard/shared/theme/app_theme.dart';
1919
import 'package:ht_data_repository/ht_data_repository.dart';
2020
import 'package:ht_kv_storage_service/ht_kv_storage_service.dart';
2121
import 'package:ht_shared/ht_shared.dart' hide AppStatus;
22+
import 'package:ht_ui_kit/ht_ui_kit.dart';
2223
import 'package:logging/logging.dart';
2324

2425
class App extends StatelessWidget {
@@ -29,7 +30,8 @@ class App extends StatelessWidget {
2930
required HtDataRepository<Country> htCountriesRepository,
3031
required HtDataRepository<Source> htSourcesRepository,
3132
required HtDataRepository<UserAppSettings> htUserAppSettingsRepository,
32-
required HtDataRepository<UserContentPreferences> htUserContentPreferencesRepository,
33+
required HtDataRepository<UserContentPreferences>
34+
htUserContentPreferencesRepository,
3335
required HtDataRepository<RemoteConfig> htRemoteConfigRepository,
3436
required HtDataRepository<DashboardSummary> htDashboardSummaryRepository,
3537
required HtKVStorageService kvStorageService,
@@ -53,7 +55,8 @@ class App extends StatelessWidget {
5355
final HtDataRepository<Country> _htCountriesRepository;
5456
final HtDataRepository<Source> _htSourcesRepository;
5557
final HtDataRepository<UserAppSettings> _htUserAppSettingsRepository;
56-
final HtDataRepository<UserContentPreferences> _htUserContentPreferencesRepository;
58+
final HtDataRepository<UserContentPreferences>
59+
_htUserContentPreferencesRepository;
5760
final HtDataRepository<RemoteConfig> _htRemoteConfigRepository;
5861
final HtDataRepository<DashboardSummary> _htDashboardSummaryRepository;
5962
final HtKVStorageService _kvStorageService;
@@ -79,10 +82,10 @@ class App extends StatelessWidget {
7982
BlocProvider(
8083
create: (context) => AppBloc(
8184
authenticationRepository: context.read<HtAuthRepository>(),
82-
userAppSettingsRepository:
83-
context.read<HtDataRepository<UserAppSettings>>(),
84-
appConfigRepository:
85-
context.read<HtDataRepository<RemoteConfig>>(),
85+
userAppSettingsRepository: context
86+
.read<HtDataRepository<UserAppSettings>>(),
87+
appConfigRepository: context
88+
.read<HtDataRepository<RemoteConfig>>(),
8689
environment: _environment,
8790
logger: Logger('AppBloc'),
8891
),
@@ -94,8 +97,8 @@ class App extends StatelessWidget {
9497
),
9598
BlocProvider(
9699
create: (context) => AppConfigurationBloc(
97-
remoteConfigRepository:
98-
context.read<HtDataRepository<RemoteConfig>>(),
100+
remoteConfigRepository: context
101+
.read<HtDataRepository<RemoteConfig>>(),
99102
),
100103
),
101104
BlocProvider(
@@ -107,10 +110,10 @@ class App extends StatelessWidget {
107110
),
108111
BlocProvider(
109112
create: (context) => DashboardBloc(
110-
dashboardSummaryRepository:
111-
context.read<HtDataRepository<DashboardSummary>>(),
112-
appConfigRepository:
113-
context.read<HtDataRepository<RemoteConfig>>(),
113+
dashboardSummaryRepository: context
114+
.read<HtDataRepository<DashboardSummary>>(),
115+
appConfigRepository: context
116+
.read<HtDataRepository<RemoteConfig>>(),
114117
headlinesRepository: context.read<HtDataRepository<Headline>>(),
115118
),
116119
),
@@ -209,9 +212,11 @@ class _AppViewState extends State<_AppView> {
209212
child: MaterialApp.router(
210213
debugShowCheckedModeBanner: false,
211214
routerConfig: _router,
212-
localizationsDelegates:
213-
AppLocalizations.localizationsDelegates,
214-
supportedLocales: AppLocalizations.supportedLocales,
215+
localizationsDelegates: const [
216+
HtUiKitLocalizations.delegate,
217+
...AppLocalizations.localizationsDelegates,
218+
],
219+
supportedLocales: HtUiKitLocalizations.supportedLocales,
215220
theme: baseTheme == AppBaseTheme.dark
216221
? darkThemeData
217222
: lightThemeData,

lib/app_configuration/bloc/app_configuration_bloc.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,14 @@ class AppConfigurationBloc
4343
emit(
4444
state.copyWith(
4545
status: AppConfigurationStatus.failure,
46-
errorMessage: e.message,
46+
exception: e,
4747
),
4848
);
4949
} catch (e) {
5050
emit(
5151
state.copyWith(
5252
status: AppConfigurationStatus.failure,
53-
errorMessage: 'An unknown error occurred: $e',
53+
exception: UnknownException('An unknown error occurred: $e'),
5454
),
5555
);
5656
}
@@ -79,14 +79,14 @@ class AppConfigurationBloc
7979
emit(
8080
state.copyWith(
8181
status: AppConfigurationStatus.failure,
82-
errorMessage: e.message,
82+
exception: e,
8383
),
8484
);
8585
} catch (e) {
8686
emit(
8787
state.copyWith(
8888
status: AppConfigurationStatus.failure,
89-
errorMessage: 'An unknown error occurred: $e',
89+
exception: UnknownException('An unknown error occurred: $e'),
9090
),
9191
);
9292
}

lib/app_configuration/bloc/app_configuration_event.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class AppConfigurationLoaded extends AppConfigurationEvent {
2020
/// {@template app_configuration_updated}
2121
/// Event to request the update of the application configuration.
2222
///
23-
/// Carries the new [appConfig] object to be saved.
23+
/// Carries the new "appConfig" object to be saved.
2424
/// {@endtemplate}
2525
class AppConfigurationUpdated extends AppConfigurationEvent {
2626
/// {@macro app_configuration_updated}

lib/app_configuration/bloc/app_configuration_state.dart

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class AppConfigurationState extends Equatable {
2424
this.status = AppConfigurationStatus.initial,
2525
this.remoteConfig,
2626
this.originalRemoteConfig,
27-
this.errorMessage,
27+
this.exception,
2828
this.isDirty = false,
2929
this.showSaveSuccess = false,
3030
});
@@ -38,8 +38,8 @@ class AppConfigurationState extends Equatable {
3838
/// The original application configuration loaded from the backend.
3939
final RemoteConfig? originalRemoteConfig;
4040

41-
/// An error message if an operation failed.
42-
final String? errorMessage;
41+
/// An error exception if an operation failed.
42+
final HtHttpException? exception;
4343

4444
/// Indicates if there are unsaved changes to the configuration.
4545
final bool isDirty;
@@ -52,7 +52,7 @@ class AppConfigurationState extends Equatable {
5252
AppConfigurationStatus? status,
5353
RemoteConfig? remoteConfig,
5454
RemoteConfig? originalRemoteConfig,
55-
String? errorMessage,
55+
HtHttpException? exception,
5656
bool? isDirty,
5757
bool clearErrorMessage = false,
5858
bool? showSaveSuccess,
@@ -62,9 +62,7 @@ class AppConfigurationState extends Equatable {
6262
status: status ?? this.status,
6363
remoteConfig: remoteConfig ?? this.remoteConfig,
6464
originalRemoteConfig: originalRemoteConfig ?? this.originalRemoteConfig,
65-
errorMessage: clearErrorMessage
66-
? null
67-
: errorMessage ?? this.errorMessage,
65+
exception: clearErrorMessage ? null : exception ?? this.exception,
6866
isDirty: isDirty ?? this.isDirty,
6967
showSaveSuccess: clearShowSaveSuccess
7068
? false
@@ -77,7 +75,7 @@ class AppConfigurationState extends Equatable {
7775
status,
7876
remoteConfig,
7977
originalRemoteConfig,
80-
errorMessage,
78+
exception,
8179
isDirty,
8280
showSaveSuccess,
8381
];

0 commit comments

Comments
 (0)