import '../../../infrastructure/utilityWidgets/loadableHydratedBloc/loadable_hydrated_bloc.dart'; import '../../../infrastructure/utilityWidgets/loadableHydratedBloc/loadable_hydrated_bloc_event.dart'; import '../repository/holidays_repository.dart'; import 'holidays_event.dart'; import 'holidays_state.dart'; class HolidaysBloc extends LoadableHydratedBloc { HolidaysBloc() { on((event, emit) { add(Emit((state) => state.copyWith(showPastHolidays: event.shouldBeVisible))); }); on((event, emit) => add( Emit((state) => state.copyWith(showDisclaimer: false)) )); } bool showPastHolidays() => innerState?.showPastHolidays ?? false; bool showDisclaimerOnEntry() => innerState?.showDisclaimer ?? false; List? getHolidays() => innerState?.holidays .where((element) => showPastHolidays() || DateTime.parse(element.end).isAfter(DateTime.now())) .toList() ?? []; @override fromNothing() => const HolidaysState(showPastHolidays: false, holidays: [], showDisclaimer: true); @override fromStorage(Map json) => HolidaysState.fromJson(json); @override Future gatherData() async { var holidays = await repo.getHolidays(); add(DataGathered((state) => state.copyWith(holidays: holidays))); } @override repository() => HolidaysRepository(); @override Map? toStorage(state) => state.toJson(); }