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 '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<Timetable> {
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<Timetable> {
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: '',
);