prevent common "change" tiles in timetable, more robust parsing

This commit is contained in:
2025-09-06 16:47:47 +02:00
parent 877633f4de
commit 7dbd6038f3

View File

@@ -1,6 +1,6 @@
import 'dart:async'; import 'dart:async';
import 'package:collection/collection.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import '../../../extensions/dateTime.dart'; import '../../../extensions/dateTime.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@@ -302,23 +302,25 @@ class _TimetableState extends State<Timetable> {
var startTime = _parseWebuntisTimestamp(element.date, element.startTime); var startTime = _parseWebuntisTimestamp(element.date, element.startTime);
var endTime = _parseWebuntisTimestamp(element.date, element.endTime); var endTime = _parseWebuntisTimestamp(element.date, element.endTime);
var subject = subjects.result.firstWhere((subject) => subject.id == element.su[0].id); var subject = subjects.result.firstWhereOrNull((subject) => subject.id == element.su.first.id);
var subjectName = { var subjectName = 'Unbekannt';
TimetableNameMode.name: subject.name, if(subject != null) {
TimetableNameMode.longName: subject.longName, subjectName = {
TimetableNameMode.alternateName: subject.alternateName, TimetableNameMode.name: subject.name,
}[settings.val().timetableSettings.timetableNameMode]; TimetableNameMode.longName: subject.longName,
TimetableNameMode.alternateName: subject.alternateName,
}[settings.val().timetableSettings.timetableNameMode]!;
}
return Appointment( return Appointment(
id: ArbitraryAppointment(webuntis: element), id: ArbitraryAppointment(webuntis: element),
startTime: startTime, startTime: startTime,
endTime: endTime, endTime: endTime,
subject: subjectName!, subject: subjectName,
location: '' 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' '\n'
'${element.te.first.longname}', '${element.te.firstOrNull?.longname ?? 'Unbekannt'}',
notes: element.activityType, notes: element.activityType,
color: _getEventColor(element, startTime, endTime), color: _getEventColor(element, startTime, endTime),
); );
@@ -331,7 +333,7 @@ class _TimetableState extends State<Timetable> {
subject: 'Änderung', subject: 'Änderung',
notes: element.info, notes: element.info,
location: 'Unbekannt', 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: '', startTimeZone: '',
endTimeZone: '', endTimeZone: '',
); );