- Ajout de deux endpoints distincts dans Urls: getSentFriendRequestsWithUserId et getReceivedFriendRequestsWithUserId - Ajout de méthodes dans FriendsRepository et FriendsRepositoryImpl pour récupérer séparément les demandes envoyées et reçues - Ajout de la méthode cancelFriendRequest pour annuler une demande envoyée - Modification de FriendsProvider pour gérer deux listes distinctes: sentRequests et receivedRequests - Mise à jour de FriendsScreen pour afficher deux sections: - Demandes reçues: avec boutons Accepter/Rejeter - Demandes envoyées: avec bouton Annuler uniquement - Correction du mapping JSON dans FriendRequest.fromJson (userNom/userPrenoms correctement mappés) - Amélioration de FriendRequestCard pour gérer les deux types de demandes - Correction de la validation d'URL d'image dans FriendDetailScreen - Support du champ uuid dans UserModel.fromJson pour compatibilité backend
84 lines
2.9 KiB
Dart
84 lines
2.9 KiB
Dart
import 'package:equatable/equatable.dart';
|
|
|
|
/// Entité représentant une demande d'amitié.
|
|
/// Contient les informations nécessaires pour gérer les demandes d'amitié en attente.
|
|
class FriendRequest extends Equatable {
|
|
const FriendRequest({
|
|
required this.friendshipId,
|
|
required this.userId,
|
|
required this.userFirstName,
|
|
required this.userLastName,
|
|
required this.friendId,
|
|
required this.friendFirstName,
|
|
required this.friendLastName,
|
|
required this.status,
|
|
required this.createdAt,
|
|
});
|
|
|
|
/// ID de la relation d'amitié
|
|
final String friendshipId;
|
|
|
|
/// ID de l'utilisateur qui a envoyé la demande
|
|
final String userId;
|
|
|
|
/// Prénom de l'utilisateur qui a envoyé la demande
|
|
final String userFirstName;
|
|
|
|
/// Nom de l'utilisateur qui a envoyé la demande
|
|
final String userLastName;
|
|
|
|
/// ID de l'utilisateur qui a reçu la demande
|
|
final String friendId;
|
|
|
|
/// Prénom de l'utilisateur qui a reçu la demande
|
|
final String friendFirstName;
|
|
|
|
/// Nom de l'utilisateur qui a reçu la demande
|
|
final String friendLastName;
|
|
|
|
/// Statut de la demande (PENDING, ACCEPTED, REJECTED)
|
|
final String status;
|
|
|
|
/// Date de création de la demande
|
|
final String createdAt;
|
|
|
|
/// Nom complet de l'utilisateur qui a envoyé la demande
|
|
String get userFullName => '$userFirstName $userLastName'.trim();
|
|
|
|
/// Nom complet de l'utilisateur qui a reçu la demande
|
|
String get friendFullName => '$friendFirstName $friendLastName'.trim();
|
|
|
|
/// Factory constructor pour créer un [FriendRequest] à partir d'un JSON
|
|
factory FriendRequest.fromJson(Map<String, dynamic> json) {
|
|
// Le backend envoie : userNom (nom de famille), userPrenoms (prénoms)
|
|
// friendNom (nom de famille), friendPrenoms (prénoms)
|
|
return FriendRequest(
|
|
friendshipId: json['friendshipId']?.toString() ?? json['id']?.toString() ?? '',
|
|
userId: json['userId']?.toString() ?? '',
|
|
// userNom = nom de famille (lastName), userPrenoms = prénoms (firstName)
|
|
userFirstName: json['userPrenoms']?.toString() ?? json['userFirstName']?.toString() ?? '',
|
|
userLastName: json['userNom']?.toString() ?? json['userLastName']?.toString() ?? '',
|
|
friendId: json['friendId']?.toString() ?? '',
|
|
// friendNom = nom de famille (lastName), friendPrenoms = prénoms (firstName)
|
|
friendFirstName: json['friendPrenoms']?.toString() ?? json['friendFirstName']?.toString() ?? '',
|
|
friendLastName: json['friendNom']?.toString() ?? json['friendLastName']?.toString() ?? '',
|
|
status: json['status']?.toString() ?? 'PENDING',
|
|
createdAt: json['createdAt']?.toString() ?? json['created_at']?.toString() ?? '',
|
|
);
|
|
}
|
|
|
|
@override
|
|
List<Object?> get props => [
|
|
friendshipId,
|
|
userId,
|
|
userFirstName,
|
|
userLastName,
|
|
friendId,
|
|
friendFirstName,
|
|
friendLastName,
|
|
status,
|
|
createdAt,
|
|
];
|
|
}
|
|
|