90 lines
2.8 KiB
Dart
90 lines
2.8 KiB
Dart
import 'package:flutter/material.dart';
|
|
import '../../domain/entities/user.dart';
|
|
|
|
/// [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 {
|
|
User _user = const User(
|
|
userId: '',
|
|
userLastName: '',
|
|
userFirstName: '',
|
|
email: '',
|
|
motDePasse: '',
|
|
profileImageUrl: '',
|
|
eventsCount: 0,
|
|
friendsCount: 0,
|
|
postsCount: 0,
|
|
visitedPlacesCount: 0,
|
|
);
|
|
|
|
/// 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.
|
|
///
|
|
/// [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,
|
|
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()}");
|
|
|
|
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()}");
|
|
|
|
_user = const User(
|
|
userId: '',
|
|
userLastName: '',
|
|
userFirstName: '',
|
|
email: '',
|
|
motDePasse: '',
|
|
profileImageUrl: '',
|
|
eventsCount: 0,
|
|
friendsCount: 0,
|
|
postsCount: 0,
|
|
visitedPlacesCount: 0,
|
|
);
|
|
|
|
debugPrint("[LOG] Informations utilisateur réinitialisées : ${_user.toString()}");
|
|
|
|
notifyListeners();
|
|
}
|
|
}
|