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

@@ -12,8 +12,8 @@ enum FriendStatus { pending, accepted, blocked, unknown }
/// Chaque instance de [Friend] est immuable et toute modification doit passer par [copyWith].
class Friend extends Equatable {
final String friendId; // ID unique de l'ami, requis et non-nullable
final String firstName; // Prénom de l'ami, non-nullable pour garantir une intégrité des données
final String lastName; // Nom de famille, non-nullable
final String friendFirstName; // Prénom de l'ami, non-nullable pour garantir une intégrité des données
final String friendLastName; // Nom de famille, non-nullable
final String? email; // Adresse e-mail, optionnelle mais typiquement présente
final String? imageUrl; // URL de l'image de profil, optionnelle
final FriendStatus status; // Statut de l'ami, avec une valeur par défaut `unknown`
@@ -26,14 +26,14 @@ class Friend extends Equatable {
/// La validation des valeurs est incluse pour garantir l'intégrité des données.
Friend({
required this.friendId,
this.firstName = 'Ami inconnu', // Valeur par défaut pour éviter les champs vides
this.lastName = '',
this.friendFirstName = 'Ami inconnu', // Valeur par défaut pour éviter les champs vides
this.friendLastName = '',
this.email,
this.imageUrl,
this.status = FriendStatus.unknown,
}) {
assert(friendId.isNotEmpty, 'friendId ne doit pas être vide');
_logger.i('[LOG] Création d\'un objet Friend : ID = $friendId, Nom = $firstName $lastName');
_logger.i('[LOG] Création d\'un objet Friend : ID = $friendId, Nom = $friendFirstName $friendLastName');
}
/// Méthode factory pour créer un objet [Friend] à partir d'un JSON.
@@ -50,8 +50,8 @@ class Friend extends Equatable {
return Friend(
friendId: json['friendId'] as String,
firstName: json['friendFirstName'] as String? ?? 'Ami inconnu',
lastName: json['friendLastName'] as String? ?? '',
friendFirstName: json['friendFirstName'] as String? ?? 'Ami inconnu',
friendLastName: json['friendLastName'] as String? ?? '',
email: json['email'] as String?,
imageUrl: json['imageUrl'] as String?,
status: _parseStatus(json['status'] as String?),
@@ -78,8 +78,8 @@ class Friend extends Equatable {
Map<String, dynamic> toJson() {
final json = {
'friendId': friendId,
'firstName': firstName,
'lastName': lastName,
'friendFirstName': friendFirstName,
'friendLastName': friendLastName,
'email': email,
'imageUrl': imageUrl,
'status': status.name,
@@ -94,16 +94,16 @@ class Friend extends Equatable {
/// Log chaque copie pour surveiller l'état des données.
Friend copyWith({
String? friendId,
String? firstName,
String? lastName,
String? friendFirstName,
String? friendLastName,
String? email,
String? imageUrl,
FriendStatus? status,
}) {
final newFriend = Friend(
friendId: friendId ?? this.friendId,
firstName: firstName ?? this.firstName,
lastName: lastName ?? this.lastName,
friendFirstName: friendFirstName ?? this.friendFirstName,
friendLastName: friendLastName ?? this.friendLastName,
email: email ?? this.email,
imageUrl: imageUrl ?? this.imageUrl,
status: status ?? this.status,
@@ -115,5 +115,5 @@ class Friend extends Equatable {
/// Propriétés utilisées pour comparer les objets [Friend],
/// facilitant l'utilisation dans des listes et des ensembles.
@override
List<Object?> get props => [friendId, firstName, lastName, email, imageUrl, status];
List<Object?> get props => [friendId, friendFirstName, friendLastName, email, imageUrl, status];
}