11import 'dart:async' ;
22
33import 'package:bloc/bloc.dart' ;
4+ import 'package:logging/logging.dart' ;
45import 'package:core/core.dart' ;
56import 'package:data_repository/data_repository.dart' ;
67import '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