Bon checkpoint + refactoring

This commit is contained in:
DahoudG
2024-11-02 22:37:47 +00:00
parent 9cf96b7acf
commit 19f6efa995
27 changed files with 684 additions and 499 deletions

View File

@@ -1,37 +1,65 @@
import 'package:flutter/material.dart';
import '../../domain/entities/user.dart';
/// [UserProvider] est un `ChangeNotifier` qui gère les informations de l'utilisateur.
/// [UserProvider] est un `ChangeNotifier` qui gère les informations complètes de l'utilisateur.
/// Toutes les modifications et actions sont loguées pour assurer une traçabilité complète dans le terminal.
class UserProvider with ChangeNotifier {
String _userId = '';
String _userName = '';
String _userLastName = '';
User _user = const User(
userId: '',
userLastName: '',
userFirstName: '',
email: '',
motDePasse: '',
profileImageUrl: '',
eventsCount: 0,
friendsCount: 0,
postsCount: 0,
visitedPlacesCount: 0,
);
/// Getter pour l'ID de l'utilisateur
String get userId => _userId;
/// Getter pour le nom de l'utilisateur
String get userName => _userName;
/// Getter pour le prénom de l'utilisateur
String get userLastName => _userLastName;
/// Getter pour l'objet utilisateur.
User get user => _user;
/// Méthode pour définir les informations de l'utilisateur.
/// Logue les informations fournies et notifie les listeners des changements.
///
/// [id] : L'ID de l'utilisateur.
/// [name] : Le nom de l'utilisateur.
/// [lastName] : Le prénom de l'utilisateur.
void setUser(String id, String name, String lastName) {
debugPrint("[LOG] Tentative de définition des informations de l'utilisateur : ID = $id, Nom = $name, Prénom = $lastName");
/// [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()}");
_userId = id;
_userName = name;
_userLastName = lastName;
_user = user;
debugPrint("[LOG] Informations utilisateur définies : ID = $_userId, Nom = $_userName, Prénom = $_userLastName");
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,
int? postsCount,
int? visitedPlacesCount,
}) {
debugPrint("[LOG] Mise à jour des statistiques utilisateur");
_user = User(
userId: _user.userId,
userLastName: _user.userLastName,
userFirstName: _user.userFirstName,
email: _user.email,
motDePasse: _user.motDePasse,
profileImageUrl: _user.profileImageUrl,
eventsCount: eventsCount ?? _user.eventsCount,
friendsCount: friendsCount ?? _user.friendsCount,
postsCount: postsCount ?? _user.postsCount,
visitedPlacesCount: visitedPlacesCount ?? _user.visitedPlacesCount,
);
debugPrint("[LOG] Nouvelles statistiques utilisateur : ${_user.toString()}");
// Notifie les widgets écoutant ce provider qu'une modification a eu lieu
notifyListeners();
}
@@ -39,15 +67,23 @@ class UserProvider with ChangeNotifier {
/// 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 : ID = $_userId, Nom = $_userName, Prénom = $_userLastName");
debugPrint("[LOG] Valeurs avant réinitialisation : ${_user.toString()}");
_userId = '';
_userName = '';
_userLastName = '';
_user = const User(
userId: '',
userLastName: '',
userFirstName: '',
email: '',
motDePasse: '',
profileImageUrl: '',
eventsCount: 0,
friendsCount: 0,
postsCount: 0,
visitedPlacesCount: 0,
);
debugPrint("[LOG] Informations utilisateur réinitialisées : ID = $_userId, Nom = $_userName, Prénom = $_userLastName");
debugPrint("[LOG] Informations utilisateur réinitialisées : ${_user.toString()}");
// Notifie les widgets écoutant ce provider que l'utilisateur a été réinitialisé
notifyListeners();
}
}