From ddf6b856938a8ae6e53788596d426b351f0ed6c2 Mon Sep 17 00:00:00 2001
From: doodlezucc <electerminator@gmail.com>
Date: Tue, 14 Nov 2023 15:30:26 +0100
Subject: [PATCH] move view to app context

---
 lib/context.dart | 6 ++++++
 lib/main.dart    | 9 +--------
 2 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/lib/context.dart b/lib/context.dart
index a0c24a7..70c1ed7 100644
--- a/lib/context.dart
+++ b/lib/context.dart
@@ -4,12 +4,17 @@ import 'untis/lecture.dart';
 import 'user/profile.dart';
 import 'user/save_state.dart';
 import 'util/listenable.dart';
+import 'views/mixed_class_view.dart';
+import 'views/view.dart';
 
 class AppContext {
   final UntisFetch untis;
   final SaveManager _saveManager;
   final Listenable<Profile?> profile = Listenable(null);
   final Listenable<DateTime> date = Listenable(DateTime.now());
+  final Listenable<TimetableView> view = Listenable(
+    MixedClassView(classIds: {}),
+  );
 
   List<Class>? classes;
   List<Lecture>? lectures;
@@ -24,5 +29,6 @@ class AppContext {
     profile.value!
       ..hiddenLectures.onChange.listen((_) => save())
       ..selectedClasses.onChange.listen((_) => save());
+    view.value = MixedClassView(classIds: profile.value!.selectedClasses);
   }
 }
diff --git a/lib/main.dart b/lib/main.dart
index da393dc..baa6d4e 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -13,8 +13,6 @@ import 'untis/fetch.dart';
 import 'untis/timetable.dart';
 import 'user/save_state.dart';
 import 'util/listenable.dart';
-import 'views/mixed_class_view.dart';
-import 'views/view.dart';
 
 void main() {
   runApp(const MyApp());
@@ -58,7 +56,6 @@ class MyHomePage extends StatefulWidget {
 }
 
 class _MyHomePageState extends State<MyHomePage> {
-  late TimetableView view;
   late List<StreamSubscription> _subscriptions;
 
   TimetableData? timetable;
@@ -108,11 +105,7 @@ class _MyHomePageState extends State<MyHomePage> {
 
   Future<void> fetchTimetable() async {
     final date = appContext.date.value;
-
-    final profile = await appContext.profile.firstNotNull;
-    final selectedClasses = profile.selectedClasses;
-
-    view = MixedClassView(classIds: selectedClasses);
+    final view = appContext.view.value;
     final fetchedTimetable = await view.timetableOf(date, untis: untis);
 
     setState(() {
-- 
GitLab