Bon checkpoint + Refactoring

This commit is contained in:
DahoudG
2024-11-08 20:30:23 +00:00
parent 19f6efa995
commit 1e888f41e8
21 changed files with 721 additions and 223 deletions

View File

@@ -30,7 +30,11 @@ class FriendsProvider with ChangeNotifier {
/// [userId] : L'identifiant unique de l'utilisateur.
/// [loadMore] : Indique s'il s'agit d'une demande de chargement supplémentaire pour la pagination.
///
/// En cas d'erreur, logue l'exception et gère l'état `isLoading`.
/// Cette méthode :
/// - Vérifie si un chargement est déjà en cours.
/// - Initialise ou poursuit la pagination.
/// - Exclut l'utilisateur lui-même de la liste.
/// - Gère les erreurs et logue chaque étape pour une traçabilité complète.
Future<void> fetchFriends(String userId, {bool loadMore = false}) async {
if (_isLoading) {
_logger.w('[LOG] Chargement déjà en cours, annulation de la nouvelle demande.');
@@ -39,10 +43,10 @@ class FriendsProvider with ChangeNotifier {
_isLoading = true;
notifyListeners();
_logger.i('[LOG] Début du chargement des amis.');
_logger.i('[LOG] Début du chargement des amis pour l\'utilisateur $userId.');
// Réinitialisation uniquement si ce n'est pas un chargement supplémentaire
if (!loadMore) {
// Réinitialisation de la liste et de la pagination si ce n'est pas un chargement supplémentaire
_friendsList = [];
_currentPage = 0;
_hasMore = true;
@@ -57,9 +61,16 @@ class FriendsProvider with ChangeNotifier {
_hasMore = false;
_logger.i('[LOG] Fin de liste atteinte, plus d\'amis à charger.');
} else {
_friendsList.addAll(newFriends);
for (var friend in newFriends) {
if (friend.friendId != userId) {
_friendsList.add(friend);
_logger.i("[LOG] Ajout de l'ami : ID = ${friend.friendId}, Nom = ${friend.friendFirstName} ${friend.friendLastName}");
} else {
_logger.w("[WARN] Exclusion de l'utilisateur lui-même de la liste d'amis : ${friend.friendId}");
}
}
_currentPage++;
_logger.i('[LOG] Amis ajoutés à la liste. Page actuelle : $_currentPage');
_logger.i('[LOG] Page suivante préparée pour le prochain chargement, page actuelle : $_currentPage');
}
} catch (e) {
_logger.e('[ERROR] Erreur lors de la récupération des amis : $e');

View File

@@ -17,26 +17,31 @@ class UserProvider with ChangeNotifier {
visitedPlacesCount: 0,
);
bool _isEmailDisplayedElsewhere = false; // Ajout de la propriété pour contrôler l'affichage de l'email
/// Getter pour l'objet utilisateur.
User get user => _user;
/// Getter pour vérifier si l'email est affiché ailleurs.
bool get isEmailDisplayedElsewhere => _isEmailDisplayedElsewhere;
/// Méthode pour définir l'état d'affichage de l'email.
void setEmailDisplayedElsewhere(bool value) {
_isEmailDisplayedElsewhere = value;
debugPrint("[LOG] isEmailDisplayedElsewhere mis à jour : $_isEmailDisplayedElsewhere");
notifyListeners();
}
/// Méthode pour définir les informations de l'utilisateur.
/// Logue les informations fournies et notifie les listeners des changements.
///
/// [user] : L'objet utilisateur contenant toutes les informations.
void setUser(User user) {
debugPrint("[LOG] Tentative de définition des informations de l'utilisateur : ${user.toString()}");
_user = user;
debugPrint("[LOG] Informations utilisateur définies : ${_user.toString()}");
// Notifie les widgets écoutant ce provider qu'une modification a eu lieu.
notifyListeners();
}
/// Méthode pour mettre à jour des statistiques de l'utilisateur.
/// Cette méthode met à jour individuellement des attributs spécifiques comme le nombre d'amis ou d'événements.
void updateStatistics({
int? eventsCount,
int? friendsCount,
@@ -59,12 +64,10 @@ class UserProvider with ChangeNotifier {
);
debugPrint("[LOG] Nouvelles statistiques utilisateur : ${_user.toString()}");
notifyListeners();
}
/// Méthode pour réinitialiser les informations de l'utilisateur.
/// Les valeurs sont loguées avant et après la réinitialisation.
void resetUser() {
debugPrint("[LOG] Réinitialisation des informations de l'utilisateur.");
debugPrint("[LOG] Valeurs avant réinitialisation : ${_user.toString()}");
@@ -83,7 +86,6 @@ class UserProvider with ChangeNotifier {
);
debugPrint("[LOG] Informations utilisateur réinitialisées : ${_user.toString()}");
notifyListeners();
}
}