implemented foreign timetable support for students, teachers, rooms, and classes, including a searchable element picker with favorites support, introduced a capabilities system for feature gating, refactored the timetable UI into a reusable TimetableCalendarView component, and redesigned the chat input field with a unified emoji picker and integrated attachment actions.

This commit is contained in:
2026-05-31 21:29:16 +02:00
parent 6e12da08c0
commit b6d06dd3b4
41 changed files with 2325 additions and 290 deletions
@@ -0,0 +1,44 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'timetable_favorites_settings.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
FavoriteTimetableElement _$FavoriteTimetableElementFromJson(
Map<String, dynamic> json,
) => FavoriteTimetableElement(
type: $enumDecode(_$TimetableElementTypeEnumMap, json['type']),
id: (json['id'] as num).toInt(),
label: json['label'] as String,
);
Map<String, dynamic> _$FavoriteTimetableElementToJson(
FavoriteTimetableElement instance,
) => <String, dynamic>{
'type': _$TimetableElementTypeEnumMap[instance.type]!,
'id': instance.id,
'label': instance.label,
};
const _$TimetableElementTypeEnumMap = {
TimetableElementType.student: 'student',
TimetableElementType.teacher: 'teacher',
TimetableElementType.room: 'room',
TimetableElementType.schoolClass: 'schoolClass',
};
TimetableFavoritesSettings _$TimetableFavoritesSettingsFromJson(
Map<String, dynamic> json,
) => TimetableFavoritesSettings(
favorites: (json['favorites'] as List<dynamic>)
.map((e) => FavoriteTimetableElement.fromJson(e as Map<String, dynamic>))
.toList(),
);
Map<String, dynamic> _$TimetableFavoritesSettingsToJson(
TimetableFavoritesSettings instance,
) => <String, dynamic>{
'favorites': instance.favorites.map((e) => e.toJson()).toList(),
};