From 7dbd6038f3e4b0908454dbc75d864ed7018fa916 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20M=C3=BCller?= Date: Sat, 6 Sep 2025 16:47:47 +0200 Subject: [PATCH] prevent common "change" tiles in timetable, more robust parsing --- lib/view/pages/timetable/timetable.dart | 26 +++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/lib/view/pages/timetable/timetable.dart b/lib/view/pages/timetable/timetable.dart index 9c939be..5f3385d 100644 --- a/lib/view/pages/timetable/timetable.dart +++ b/lib/view/pages/timetable/timetable.dart @@ -1,6 +1,6 @@ - import 'dart:async'; +import 'package:collection/collection.dart'; import 'package:flutter/material.dart'; import '../../../extensions/dateTime.dart'; import 'package:provider/provider.dart'; @@ -302,23 +302,25 @@ class _TimetableState extends State { var startTime = _parseWebuntisTimestamp(element.date, element.startTime); var endTime = _parseWebuntisTimestamp(element.date, element.endTime); - var subject = subjects.result.firstWhere((subject) => subject.id == element.su[0].id); - var subjectName = { - TimetableNameMode.name: subject.name, - TimetableNameMode.longName: subject.longName, - TimetableNameMode.alternateName: subject.alternateName, - }[settings.val().timetableSettings.timetableNameMode]; - + var subject = subjects.result.firstWhereOrNull((subject) => subject.id == element.su.first.id); + var subjectName = 'Unbekannt'; + if(subject != null) { + subjectName = { + TimetableNameMode.name: subject.name, + TimetableNameMode.longName: subject.longName, + TimetableNameMode.alternateName: subject.alternateName, + }[settings.val().timetableSettings.timetableNameMode]!; + } return Appointment( id: ArbitraryAppointment(webuntis: element), startTime: startTime, endTime: endTime, - subject: subjectName!, + subject: subjectName, location: '' - '${rooms.result.firstWhere((room) => room.id == element.ro[0].id).name}' + '${rooms.result.firstWhereOrNull((room) => room.id == element.ro.firstOrNull?.id)?.name ?? 'Unbekannt'}' '\n' - '${element.te.first.longname}', + '${element.te.firstOrNull?.longname ?? 'Unbekannt'}', notes: element.activityType, color: _getEventColor(element, startTime, endTime), ); @@ -331,7 +333,7 @@ class _TimetableState extends State { subject: 'Änderung', notes: element.info, location: 'Unbekannt', - color: endTime.isBefore(DateTime.now()) ? Theme.of(context).primaryColor.withAlpha(100) : Theme.of(context).primaryColor, + color: const Color(0xff404040).withAlpha(endTime.isBefore(DateTime.now()) ? 100 : 255), startTimeZone: '', endTimeZone: '', );