feat: integrate ErrorService for consistent error display and standardize bloc error messages.

This commit is contained in:
Van Leemput Dayron
2025-12-02 13:59:40 +01:00
parent 1e70b9e09f
commit 6757cb013a
24 changed files with 927 additions and 608 deletions

View File

@@ -2,6 +2,8 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:travel_mate/services/notification_service.dart';
import 'package:travel_mate/services/logger_service.dart';
import 'package:travel_mate/services/error_service.dart';
import 'user_event.dart' as event;
import 'user_state.dart' as state;
@@ -17,6 +19,8 @@ class UserBloc extends Bloc<event.UserEvent, state.UserState> {
/// Firestore instance for user data operations.
final FirebaseFirestore _firestore = FirebaseFirestore.instance;
final _errorService = ErrorService();
/// Creates a new [UserBloc] with initial state.
///
/// Registers event handlers for all user-related events.
@@ -50,7 +54,7 @@ class UserBloc extends Bloc<event.UserEvent, state.UserState> {
final notificationService = NotificationService();
await notificationService.initialize();
final fcmToken = await notificationService.getFCMToken();
print('DEBUG: UserBloc - FCM Token retrieved: $fcmToken');
LoggerService.info('UserBloc - FCM Token retrieved: $fcmToken');
// Fetch user data from Firestore
final userDoc = await _firestore
@@ -81,21 +85,22 @@ class UserBloc extends Bloc<event.UserEvent, state.UserState> {
// Update FCM token if it changed
if (fcmToken != null && user.fcmToken != fcmToken) {
print('DEBUG: UserBloc - Updating FCM token in Firestore');
LoggerService.info('UserBloc - Updating FCM token in Firestore');
await _firestore.collection('users').doc(currentUser.uid).update({
'fcmToken': fcmToken,
});
print('DEBUG: UserBloc - FCM token updated');
LoggerService.info('UserBloc - FCM token updated');
} else {
print(
'DEBUG: UserBloc - FCM token not updated. Local: $fcmToken, Firestore: ${user.fcmToken}',
LoggerService.info(
'UserBloc - FCM token not updated. Local: $fcmToken, Firestore: ${user.fcmToken}',
);
}
emit(state.UserLoaded(user));
}
} catch (e) {
emit(state.UserError('Error loading user: $e'));
} catch (e, stackTrace) {
_errorService.logError('UserBloc', 'Error loading user: $e', stackTrace);
emit(state.UserError('Impossible de charger l\'utilisateur'));
}
}
@@ -124,8 +129,9 @@ class UserBloc extends Bloc<event.UserEvent, state.UserState> {
} else {
emit(state.UserError('User not found'));
}
} catch (e) {
emit(state.UserError('Error loading user: $e'));
} catch (e, stackTrace) {
_errorService.logError('UserBloc', 'Error loading user: $e', stackTrace);
emit(state.UserError('Impossible de charger l\'utilisateur'));
}
}
@@ -158,8 +164,13 @@ class UserBloc extends Bloc<event.UserEvent, state.UserState> {
});
emit(state.UserLoaded(updatedUser));
} catch (e) {
emit(state.UserError('Error updating user: $e'));
} catch (e, stackTrace) {
_errorService.logError(
'UserBloc',
'Error updating user: $e',
stackTrace,
);
emit(state.UserError('Impossible de mettre à jour l\'utilisateur'));
}
}
}