From bdfdddae99605d5577c811c6e1f5fc9a96c7f13c Mon Sep 17 00:00:00 2001
From: doodlezucc <electerminator@gmail.com>
Date: Wed, 25 Oct 2023 11:58:46 +0200
Subject: [PATCH] move timetable iterable merge to timetable class

---
 lib/main.dart            | 12 +-----------
 lib/untis/timetable.dart | 14 ++++++++++++++
 2 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/lib/main.dart b/lib/main.dart
index 3fd81e6..c991cd2 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 96e998a..c0617b8 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;
+  }
 }
-- 
GitLab