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
@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:syncfusion_flutter_calendar/calendar.dart';
import '../../../../state/app/modules/timetable/bloc/timetable_bloc.dart';
import '../../../../state/app/modules/timetable/bloc/timetable_state.dart';
import '../data/arbitrary_appointment.dart';
import 'custom_event_sheet.dart';
import 'lesson_sheet.dart';
@@ -9,15 +9,14 @@ import 'lesson_sheet.dart';
class AppointmentDetailsDispatcher {
static void show(
BuildContext context,
TimetableBloc bloc,
TimetableState? state,
Appointment appointment,
) {
final id = appointment.id;
if (id is! ArbitraryAppointment) return;
id.when(
lesson: (entry) =>
LessonSheet.show(context, bloc, appointment, entry),
lesson: (entry) => LessonSheet.show(context, state, appointment, entry),
custom: (event) => CustomEventSheet.show(context, event),
);
}