38 lines
1.5 KiB
Dart
38 lines
1.5 KiB
Dart
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<HolidaysEvent, HolidaysState, HolidaysRepository> {
|
|
HolidaysBloc() {
|
|
on<SetPastHolidaysVisible>((event, emit) {
|
|
add(Emit((state) => state.copyWith(showPastHolidays: event.shouldBeVisible)));
|
|
});
|
|
|
|
on<DisclaimerDismissed>((event, emit) => add(
|
|
Emit((state) => state.copyWith(showDisclaimer: false))
|
|
));
|
|
}
|
|
|
|
bool showPastHolidays() => innerState?.showPastHolidays ?? false;
|
|
bool showDisclaimerOnEntry() => innerState?.showDisclaimer ?? false;
|
|
List<Holiday>? 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<String, dynamic> json) => HolidaysState.fromJson(json);
|
|
@override
|
|
Future<void> gatherData() async {
|
|
var holidays = await repo.getHolidays();
|
|
add(DataGathered((state) => state.copyWith(holidays: holidays)));
|
|
}
|
|
@override
|
|
repository() => HolidaysRepository();
|
|
@override
|
|
Map<String, dynamic>? toStorage(state) => state.toJson();
|
|
}
|