implemented the Ticker module with a native ProseMirror document renderer and integrated API support for structured content, navigation trees, and proxied files
This commit is contained in:
@@ -6,7 +6,6 @@ import 'package:hydrated_bloc/hydrated_bloc.dart';
|
||||
import '../../../../../storage/settings.dart';
|
||||
import '../../../../../utils/debouncer.dart';
|
||||
import '../../../../../view/pages/settings/data/default_settings.dart';
|
||||
import '../../app_modules.dart';
|
||||
|
||||
class SettingsCubit extends HydratedCubit<Settings> {
|
||||
static const _debounceTag = 'settings_persist';
|
||||
@@ -47,16 +46,17 @@ class SettingsCubit extends HydratedCubit<Settings> {
|
||||
emit(DefaultSettings.get());
|
||||
}
|
||||
|
||||
// Modules missing from a stale persisted moduleOrder are handled at read
|
||||
// time by AppModule.effectiveModuleOrder (inserted at their default
|
||||
// position) — no healing on hydration needed.
|
||||
@override
|
||||
Settings fromJson(Map<String, dynamic> json) {
|
||||
try {
|
||||
return _appendNewModules(Settings.fromJson(json));
|
||||
return Settings.fromJson(json);
|
||||
} catch (_) {
|
||||
try {
|
||||
return _appendNewModules(
|
||||
Settings.fromJson(
|
||||
_mergeSettings(json, DefaultSettings.get().toJson()),
|
||||
),
|
||||
return Settings.fromJson(
|
||||
_mergeSettings(json, DefaultSettings.get().toJson()),
|
||||
);
|
||||
} catch (_) {
|
||||
return DefaultSettings.get();
|
||||
@@ -64,20 +64,6 @@ class SettingsCubit extends HydratedCubit<Settings> {
|
||||
}
|
||||
}
|
||||
|
||||
// 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();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user