Skip to content

Commit 3d0e8f1

Browse files
committed
feat(user_management): add logging and improve error handling
- Add logging statements to track user dashboard role changes - Implement try-catch block for better error handling - Include stack trace when logging errors - Use Logger instance for consistent logging throughout the bloc
1 parent 5a27a6f commit 3d0e8f1

File tree

1 file changed

+28
-4
lines changed

1 file changed

+28
-4
lines changed

lib/user_management/bloc/user_management_bloc.dart

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'dart:async';
22

33
import 'package:bloc/bloc.dart';
4+
import 'package:logging/logging.dart';
45
import 'package:core/core.dart';
56
import 'package:data_repository/data_repository.dart';
67
import 'package:equatable/equatable.dart';
@@ -24,8 +25,10 @@ class UserManagementBloc
2425
UserManagementBloc({
2526
required DataRepository<User> usersRepository,
2627
required UserFilterBloc userFilterBloc,
28+
Logger? logger,
2729
}) : _usersRepository = usersRepository,
2830
_userFilterBloc = userFilterBloc,
31+
_logger = logger ?? Logger('UserManagementBloc'),
2932
super(const UserManagementState()) {
3033
on<LoadUsersRequested>(_onLoadUsersRequested);
3134
on<UserDashboardRoleChanged>(_onUserDashboardRoleChanged);
@@ -58,6 +61,7 @@ class UserManagementBloc
5861

5962
final DataRepository<User> _usersRepository;
6063
final UserFilterBloc _userFilterBloc;
64+
final Logger _logger;
6165

6266
late final StreamSubscription<UserFilterState> _filterSubscription;
6367
late final StreamSubscription<Type> _userUpdateSubscription;
@@ -145,11 +149,31 @@ class UserManagementBloc
145149
UserDashboardRoleChanged event,
146150
Emitter<UserManagementState> emit,
147151
) async {
148-
final userToUpdate = state.users.firstWhere((u) => u.id == event.userId);
149-
await _usersRepository.update(
150-
id: event.userId,
151-
item: userToUpdate.copyWith(dashboardRole: event.dashboardRole),
152+
_logger.info(
153+
'Attempting to change dashboard role for user: ${event.userId} '
154+
'to ${event.dashboardRole.name}',
152155
);
156+
try {
157+
final userToUpdate = state.users.firstWhere((u) => u.id == event.userId);
158+
_logger.info('Found user in state: $userToUpdate');
159+
160+
final updatedItem = userToUpdate.copyWith(
161+
dashboardRole: event.dashboardRole,
162+
);
163+
_logger.info('Sending updated user object to repository: $updatedItem');
164+
165+
await _usersRepository.update(
166+
id: event.userId,
167+
item: updatedItem,
168+
);
169+
} catch (error, stackTrace) {
170+
_logger.severe(
171+
'Error changing user dashboard role for ${event.userId}.',
172+
error,
173+
stackTrace,
174+
);
175+
addError(error, stackTrace);
176+
}
153177
}
154178

155179
/// Handles the request to change a user's app role.

0 commit comments

Comments
 (0)