import 'dart:developer'; 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) { log('SetPastHolidaysVisible: ${event.shouldBeVisible.toString()}'); add(Emit((state) => state.copyWith(showPastHolidays: event.shouldBeVisible))); }); on((event, emit) => add( Emit((state) => state.copyWith(showDisclaimer: false)) )); } bool showPastHolidays() => innerState?.showPastHolidays ?? 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(); }