import 'package:equatable/equatable.dart'; enum FeedItemType { post, event, contribution, notification } /// Entité principale représentant un élément de n'importe quel flux (DRY) class FeedItem extends Equatable { final String id; final FeedItemType type; final String authorName; // Nom de l'utilisateur ou de l'entité final String? authorAvatarUrl; final DateTime createdAt; final String content; // Interactions sociales final int likesCount; final int commentsCount; final bool isLikedByMe; // Actions spécifiques (ex: Payer, S'inscrire) final String? customActionLabel; final String? actionUrlTarget; // Deep link ou route const FeedItem({ required this.id, required this.type, required this.authorName, this.authorAvatarUrl, required this.createdAt, required this.content, this.likesCount = 0, this.commentsCount = 0, this.isLikedByMe = false, this.customActionLabel, this.actionUrlTarget, }); @override List get props => [ id, type, authorName, authorAvatarUrl, createdAt, content, likesCount, commentsCount, isLikedByMe, customActionLabel, actionUrlTarget, ]; }