import 'package:equatable/equatable.dart'; import '../../domain/entities/feed_item.dart'; abstract class UnifiedFeedState extends Equatable { const UnifiedFeedState(); @override List get props => []; } class UnifiedFeedInitial extends UnifiedFeedState {} class UnifiedFeedLoading extends UnifiedFeedState {} class UnifiedFeedLoaded extends UnifiedFeedState { final List items; final bool hasReachedMax; final bool isFetchingMore; /// Message d'erreur affiché une fois (ex. « Impossible de charger plus »), à consommer puis effacer par l'UI. final String? loadMoreErrorMessage; const UnifiedFeedLoaded({ required this.items, this.hasReachedMax = false, this.isFetchingMore = false, this.loadMoreErrorMessage, }); UnifiedFeedLoaded copyWith({ List? items, bool? hasReachedMax, bool? isFetchingMore, String? loadMoreErrorMessage, }) { return UnifiedFeedLoaded( items: items ?? this.items, hasReachedMax: hasReachedMax ?? this.hasReachedMax, isFetchingMore: isFetchingMore ?? false, loadMoreErrorMessage: loadMoreErrorMessage, ); } @override List get props => [items, hasReachedMax, isFetchingMore, loadMoreErrorMessage]; } class UnifiedFeedError extends UnifiedFeedState { final String message; const UnifiedFeedError(this.message); @override List get props => [message]; }