dart format
This commit is contained in:
@@ -4,28 +4,41 @@ import '../repository/marianum_dates_repository.dart';
|
||||
import 'marianum_dates_event.dart';
|
||||
import 'marianum_dates_state.dart';
|
||||
|
||||
class MarianumDatesBloc extends LoadableHydratedBloc<MarianumDatesEvent, MarianumDatesState, MarianumDatesRepository> {
|
||||
class MarianumDatesBloc
|
||||
extends
|
||||
LoadableHydratedBloc<
|
||||
MarianumDatesEvent,
|
||||
MarianumDatesState,
|
||||
MarianumDatesRepository
|
||||
> {
|
||||
MarianumDatesBloc() {
|
||||
on<SetPastEventsVisible>((event, emit) {
|
||||
add(Emit((state) => state.copyWith(showPastEvents: event.shouldBeVisible)));
|
||||
add(
|
||||
Emit((state) => state.copyWith(showPastEvents: event.shouldBeVisible)),
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
bool showPastEvents() => innerState?.showPastEvents ?? false;
|
||||
|
||||
List<MarianumDate>? getEvents() => innerState?.events
|
||||
.where((e) => showPastEvents() || e.end.isAfter(DateTime.now()))
|
||||
.toList() ?? [];
|
||||
List<MarianumDate>? getEvents() =>
|
||||
innerState?.events
|
||||
.where((e) => showPastEvents() || e.end.isAfter(DateTime.now()))
|
||||
.toList() ??
|
||||
[];
|
||||
|
||||
@override
|
||||
MarianumDatesState fromNothing() => const MarianumDatesState(showPastEvents: false, events: []);
|
||||
MarianumDatesState fromNothing() =>
|
||||
const MarianumDatesState(showPastEvents: false, events: []);
|
||||
@override
|
||||
MarianumDatesState fromStorage(Map<String, dynamic> json) => MarianumDatesState.fromJson(json);
|
||||
MarianumDatesState fromStorage(Map<String, dynamic> json) =>
|
||||
MarianumDatesState.fromJson(json);
|
||||
@override
|
||||
Future<void> gatherData() async {
|
||||
final events = await repo.getEvents();
|
||||
add(DataGathered((state) => state.copyWith(events: events)));
|
||||
}
|
||||
|
||||
@override
|
||||
MarianumDatesRepository repository() => MarianumDatesRepository();
|
||||
@override
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import '../../../infrastructure/utility_widgets/loadable_hydrated_bloc/loadable_hydrated_bloc_event.dart';
|
||||
import 'marianum_dates_state.dart';
|
||||
|
||||
sealed class MarianumDatesEvent extends LoadableHydratedBlocEvent<MarianumDatesState> {}
|
||||
sealed class MarianumDatesEvent
|
||||
extends LoadableHydratedBlocEvent<MarianumDatesState> {}
|
||||
|
||||
class SetPastEventsVisible extends MarianumDatesEvent {
|
||||
final bool shouldBeVisible;
|
||||
|
||||
@@ -11,7 +11,8 @@ abstract class MarianumDatesState with _$MarianumDatesState {
|
||||
required List<MarianumDate> events,
|
||||
}) = _MarianumDatesState;
|
||||
|
||||
factory MarianumDatesState.fromJson(Map<String, Object?> json) => _$MarianumDatesStateFromJson(json);
|
||||
factory MarianumDatesState.fromJson(Map<String, Object?> json) =>
|
||||
_$MarianumDatesStateFromJson(json);
|
||||
}
|
||||
|
||||
@freezed
|
||||
@@ -25,5 +26,6 @@ abstract class MarianumDate with _$MarianumDate {
|
||||
required bool isAllDay,
|
||||
}) = _MarianumDate;
|
||||
|
||||
factory MarianumDate.fromJson(Map<String, Object?> json) => _$MarianumDateFromJson(json);
|
||||
factory MarianumDate.fromJson(Map<String, Object?> json) =>
|
||||
_$MarianumDateFromJson(json);
|
||||
}
|
||||
|
||||
@@ -4,12 +4,15 @@ import 'package:enough_icalendar/enough_icalendar.dart';
|
||||
import '../bloc/marianum_dates_state.dart';
|
||||
|
||||
class MarianumDatesGetEvents {
|
||||
static const String url = 'https://public-cal.marianumlan.de/cal_public/ad4c5da8-7466-9c72-89cb-8b8d9a5cf26c';
|
||||
static const String url =
|
||||
'https://public-cal.marianumlan.de/cal_public/ad4c5da8-7466-9c72-89cb-8b8d9a5cf26c';
|
||||
|
||||
final Dio _dio = Dio(BaseOptions(
|
||||
connectTimeout: const Duration(seconds: 10),
|
||||
receiveTimeout: const Duration(seconds: 30),
|
||||
));
|
||||
final Dio _dio = Dio(
|
||||
BaseOptions(
|
||||
connectTimeout: const Duration(seconds: 10),
|
||||
receiveTimeout: const Duration(seconds: 30),
|
||||
),
|
||||
);
|
||||
|
||||
Future<List<MarianumDate>> run() async {
|
||||
final response = await _dio.get<String>(url);
|
||||
@@ -20,7 +23,11 @@ class MarianumDatesGetEvents {
|
||||
final calendar = root is VCalendar ? root : null;
|
||||
final source = calendar?.children ?? root.children;
|
||||
|
||||
final events = source.whereType<VEvent>().map(_toMarianumDate).whereType<MarianumDate>().toList();
|
||||
final events = source
|
||||
.whereType<VEvent>()
|
||||
.map(_toMarianumDate)
|
||||
.whereType<MarianumDate>()
|
||||
.toList();
|
||||
events.sort((a, b) => a.start.compareTo(b.start));
|
||||
return events;
|
||||
}
|
||||
@@ -41,8 +48,11 @@ class MarianumDatesGetEvents {
|
||||
}
|
||||
|
||||
static bool _isAllDay(DateTime start, DateTime end) {
|
||||
final startMidnight = start.hour == 0 && start.minute == 0 && start.second == 0;
|
||||
final startMidnight =
|
||||
start.hour == 0 && start.minute == 0 && start.second == 0;
|
||||
final endMidnight = end.hour == 0 && end.minute == 0 && end.second == 0;
|
||||
return startMidnight && endMidnight && end.difference(start).inHours % 24 == 0;
|
||||
return startMidnight &&
|
||||
endMidnight &&
|
||||
end.difference(start).inHours % 24 == 0;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user