marianum appointments

This commit is contained in:
2026-05-05 16:05:07 +02:00
parent e8faa77e70
commit bee5c02a4f
13 changed files with 971 additions and 13 deletions
@@ -5,6 +5,7 @@ import 'package:hydrated_bloc/hydrated_bloc.dart';
import '../../../../../storage/base/settings.dart';
import '../../../../../view/settings/defaultSettings.dart';
import '../../app_modules.dart';
class SettingsCubit extends HydratedCubit<Settings> {
static const _debounceTag = 'settings_persist';
@@ -36,16 +37,28 @@ class SettingsCubit extends HydratedCubit<Settings> {
@override
Settings fromJson(Map<String, dynamic> json) {
try {
return Settings.fromJson(json);
return _appendNewModules(Settings.fromJson(json));
} catch (_) {
try {
return Settings.fromJson(_mergeSettings(json, DefaultSettings.get().toJson()));
return _appendNewModules(Settings.fromJson(_mergeSettings(json, DefaultSettings.get().toJson())));
} catch (_) {
return DefaultSettings.get();
}
}
}
// Modules added in newer app versions won't appear in a previously persisted
// moduleOrder. Append any enum value that is neither ordered nor hidden so it
// becomes visible in the "Mehr" menu without forcing a full settings reset.
Settings _appendNewModules(Settings s) {
final order = s.modulesSettings.moduleOrder;
final hidden = s.modulesSettings.hiddenModules;
final missing = Modules.values.where((m) => !order.contains(m) && !hidden.contains(m));
if (missing.isEmpty) return s;
s.modulesSettings.moduleOrder = [...order, ...missing];
return s;
}
@override
Map<String, dynamic>? toJson(Settings state) => state.toJson();