import 'package:flutter_bloc/flutter_bloc.dart'; import '../../models/models.dart'; import 'book_details_event.dart'; import 'book_details_state.dart'; class BookDetailsBloc extends Bloc { BookDetailsBloc() : super(BookDetailsState.initial()) { on(_onLoadBookDetails); on(_onToggleFavorite); on(_onUpdateProgress); on(_onUpdateStatus); on(_onDeleteBook); } void _onLoadBookDetails(LoadBookDetails event, Emitter emit) { emit(state.copyWith( book: event.book, isLoading: false, )); } void _onToggleFavorite(ToggleFavorite event, Emitter emit) { if (state.book == null) return; final updatedBook = state.book!.copyWith( isFavorite: !state.book!.isFavorite, ); emit(state.copyWith( book: updatedBook, )); } void _onUpdateProgress(UpdateProgress event, Emitter emit) { if (state.book == null) return; final updatedBook = state.book!.copyWith( progress: event.progress, status: event.progress >= 100 ? BookStatus.done : BookStatus.reading, ); emit(state.copyWith( book: updatedBook, )); } void _onUpdateStatus(UpdateStatus event, Emitter emit) { if (state.book == null) return; final updatedBook = state.book!.copyWith( status: event.status, ); emit(state.copyWith( book: updatedBook, )); } void _onDeleteBook(DeleteBook event, Emitter emit) { emit(state.copyWith( isDeleted: true, )); } }