implemented a comprehensive client-side demo mode triggered by a "demo@" username prefix, serving curated fixture data for all app modules
This commit is contained in:
@@ -10,6 +10,7 @@ import '../../../../api/mhsl/custom_timetable_event/custom_timetable_event.dart'
|
||||
import '../../../../extensions/date_time.dart';
|
||||
import '../../../../state/app/modules/timetable/bloc/timetable_bloc.dart';
|
||||
import '../../../../widget/async_action_button.dart';
|
||||
import '../../../../widget/demo_restricted.dart';
|
||||
import '../../../../widget/focus_behaviour.dart';
|
||||
import 'custom_event_colors.dart';
|
||||
|
||||
@@ -130,6 +131,7 @@ class _CustomEventEditDialogState extends State<CustomEventEditDialog> {
|
||||
end.second == 0;
|
||||
|
||||
Future<void> _save() async {
|
||||
if (guardDemoAction(context)) return;
|
||||
if (_name.text.trim().isEmpty) {
|
||||
throw Exception('Bitte einen Terminnamen eingeben.');
|
||||
}
|
||||
|
||||
@@ -6,12 +6,14 @@ import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import '../../../../api/mhsl/custom_timetable_event/custom_timetable_event.dart';
|
||||
import '../../../../state/app/modules/timetable/bloc/timetable_bloc.dart';
|
||||
import '../../../../widget/confirm_dialog.dart';
|
||||
import '../../../../widget/demo_restricted.dart';
|
||||
|
||||
Completer<void> showDeleteCustomEventDialog(
|
||||
BuildContext context,
|
||||
CustomTimetableEvent event,
|
||||
) {
|
||||
final completer = Completer<void>();
|
||||
if (guardDemoAction(context)) return completer;
|
||||
final bloc = context.read<TimetableBloc>();
|
||||
ConfirmDialog(
|
||||
title: 'Termin löschen',
|
||||
|
||||
@@ -11,6 +11,7 @@ import '../../../state/app/modules/settings/bloc/settings_cubit.dart';
|
||||
import '../../../state/app/modules/timetable/bloc/timetable_bloc.dart';
|
||||
import '../../../state/app/modules/timetable/bloc/timetable_state.dart';
|
||||
import '../../../utils/haptics.dart';
|
||||
import '../../../widget/demo_restricted.dart';
|
||||
import 'custom_events/custom_event_edit_dialog.dart';
|
||||
import 'details/appointment_details_dispatcher.dart';
|
||||
import 'widgets/timetable_calendar_view.dart';
|
||||
@@ -42,6 +43,7 @@ class _TimetableState extends State<Timetable> {
|
||||
state.startDate == _mondayOf(_initialDisplayDate());
|
||||
|
||||
Future<void> _openPicker() async {
|
||||
if (guardDemoAction(context)) return;
|
||||
final ref = await AppRoutes.openElementPicker(context);
|
||||
if (!mounted || ref == null) return;
|
||||
setState(() => _selected = ref);
|
||||
|
||||
Reference in New Issue
Block a user