import 'package:equatable/equatable.dart'; import 'user.dart'; enum FriendRequestStatus { pending('PENDING'); final String value; const FriendRequestStatus(this.value); static FriendRequestStatus fromString(String value) { return FriendRequestStatus.values.firstWhere( (e) => e.value == value, orElse: () => FriendRequestStatus.pending, ); } } class FriendRequest extends Equatable { final String id; final User fromUser; final User toUser; final FriendRequestStatus status; final DateTime createdAt; const FriendRequest({ required this.id, required this.fromUser, required this.toUser, required this.status, required this.createdAt, }); factory FriendRequest.fromJson(Map json) { return FriendRequest( id: json['id'] as String, fromUser: User.fromJson(json['fromUser'] as Map), toUser: User.fromJson(json['toUser'] as Map), status: FriendRequestStatus.fromString(json['status'] as String), createdAt: DateTime.parse(json['createdAt'] as String), ); } Map toJson() { return { 'id': id, 'fromUser': fromUser.toJson(), 'toUser': toUser.toJson(), 'status': status.value, 'createdAt': createdAt.toIso8601String(), }; } @override List get props => [id, fromUser, toUser, status, createdAt]; }