import 'package:equatable/equatable.dart'; import '../../../models/models.dart'; class LibraryState extends Equatable { final List books; final List filteredBooks; final Book? selectedBook; final String searchQuery; final BookStatus? statusFilter; final bool isLoading; final String? errorMessage; const LibraryState({ this.books = const [], this.filteredBooks = const [], this.selectedBook, this.searchQuery = '', this.statusFilter, this.isLoading = false, this.errorMessage, }); factory LibraryState.initial() { return const LibraryState( isLoading: true, ); } LibraryState copyWith({ List? books, List? filteredBooks, Book? selectedBook, String? searchQuery, BookStatus? statusFilter, bool? isLoading, String? errorMessage, }) { return LibraryState( books: books ?? this.books, filteredBooks: filteredBooks ?? this.filteredBooks, selectedBook: selectedBook, searchQuery: searchQuery ?? this.searchQuery, statusFilter: statusFilter ?? this.statusFilter, isLoading: isLoading ?? this.isLoading, errorMessage: errorMessage ?? this.errorMessage, ); } @override List get props => [ books, filteredBooks, selectedBook, searchQuery, statusFilter, isLoading, errorMessage, ]; }