feat(frontend): Séparation des demandes d'amitié envoyées et reçues
- 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
This commit is contained in:
83
lib/domain/entities/friend_request.dart
Normal file
83
lib/domain/entities/friend_request.dart
Normal file
@@ -0,0 +1,83 @@
|
||||
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,
|
||||
];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user