import '../../../backend/backend.dart'; class FeedState { const FeedState({ this.posts = const [], this.selectedTags = const [], this.selectedProviderIds = const [], this.ratingFilter, this.topPeriodFilter = TopPeriodFilter.none, this.tagSuggestions = const [], this.providers = const [], this.isLoadingMore = false, this.hasMore = true, this.emptyPageStreak = 0, this.error, this.providerStatusMessage, }); final List posts; final List selectedTags; final List selectedProviderIds; final String? ratingFilter; final TopPeriodFilter topPeriodFilter; final List tagSuggestions; final List providers; final bool isLoadingMore; final bool hasMore; final int emptyPageStreak; final String? error; final String? providerStatusMessage; FeedState copyWith({ List? posts, List? selectedTags, List? selectedProviderIds, String? ratingFilter, TopPeriodFilter? topPeriodFilter, List? tagSuggestions, bool clearRating = false, List? providers, bool? isLoadingMore, bool? hasMore, int? emptyPageStreak, String? error, bool clearError = false, String? providerStatusMessage, bool clearProviderStatus = false, }) { return FeedState( posts: posts ?? this.posts, selectedTags: selectedTags ?? this.selectedTags, selectedProviderIds: selectedProviderIds ?? this.selectedProviderIds, ratingFilter: clearRating ? null : ratingFilter ?? this.ratingFilter, topPeriodFilter: topPeriodFilter ?? this.topPeriodFilter, tagSuggestions: tagSuggestions ?? this.tagSuggestions, providers: providers ?? this.providers, isLoadingMore: isLoadingMore ?? this.isLoadingMore, hasMore: hasMore ?? this.hasMore, emptyPageStreak: emptyPageStreak ?? this.emptyPageStreak, error: clearError ? null : error ?? this.error, providerStatusMessage: clearProviderStatus ? null : providerStatusMessage ?? this.providerStatusMessage, ); } }