diff --git a/lib/main.dart b/lib/main.dart index 3fd81e6e3263b4feb9eaeeb8b0068848402fe833..c991cd2b21458ec8a50d2fb372010a0e9f05a0b4 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -105,8 +105,6 @@ class _MyHomePageState extends State<MyHomePage> { Future<void> fetchTimetable() async { final date = appContext.date.value; - TimetableData? merged; - final profile = await appContext.profile.firstNotNull; final selectedClasses = profile.selectedClasses; @@ -114,16 +112,8 @@ class _MyHomePageState extends State<MyHomePage> { return Future(() => untis.timetableOf(classid, date).fetched); })); - for (final fetched in allTimetables) { - if (merged == null) { - merged = fetched; - } else { - merged = TimetableData.merge(merged, fetched); - } - } - setState(() { - timetable = merged; + timetable = TimetableData.mergeAll(allTimetables); }); } diff --git a/lib/untis/timetable.dart b/lib/untis/timetable.dart index 96e998a8f33aa3c112435c4c81281d2dbe61a4a7..c0617b84590675e329c4aea5bd5bd3c007e206af 100644 --- a/lib/untis/timetable.dart +++ b/lib/untis/timetable.dart @@ -20,4 +20,18 @@ class TimetableData { rooms: a.rooms.union(b.rooms), ); } + + static TimetableData? mergeAll(Iterable<TimetableData> all) { + TimetableData? merged; + + for (final fetched in all) { + if (merged == null) { + merged = fetched; + } else { + merged = TimetableData.merge(merged, fetched); + } + } + + return merged; + } }