import 'package:flutter/material.dart'; import 'package:immich_mobile/constants/colors.dart'; import 'package:immich_mobile/constants/enums.dart'; import 'package:immich_mobile/domain/models/log.model.dart'; import 'package:immich_mobile/domain/models/timeline.model.dart'; import 'package:immich_mobile/domain/models/value_codec.dart'; import 'package:immich_mobile/providers/album/album_sort_by_options.provider.dart'; import 'package:immich_mobile/utils/semver.dart'; enum SettingsKey { // Theme themePrimaryColor(codec: EnumCodec(ImmichColorPreset.values)), themeMode(codec: EnumCodec(ThemeMode.values)), themeDynamic(), themeColorfulInterface(), // Image imagePreferRemote(), imageLoadOriginal(), // Viewer viewerLoopVideo(), viewerLoadOriginalVideo(), viewerAutoPlayVideo(), viewerTapToNavigate(), // Network networkAutoEndpointSwitching(), networkExternalEndpointList>(codec: ListCodec(PrimitiveCodec.string)), networkCustomHeaders>(codec: MapCodec(PrimitiveCodec.string, PrimitiveCodec.string)), networkPreferredWifiName(), networkLocalEndpoint(), // Album albumSortMode(codec: EnumCodec(AlbumSortMode.values)), albumIsReverse(), albumIsGrid(), // Backup backupEnabled(), backupUseCellularForVideos(), backupUseCellularForPhotos(), backupRequireCharging(), backupTriggerDelay(), backupSyncAlbums(), // Timeline timelineTilesPerRow(), timelineGroupAssetsBy(codec: EnumCodec(GroupAssetsBy.values)), timelineStorageIndicator(), // Log logLevel(codec: EnumCodec(LogLevel.values)), // Map mapShowFavoriteOnly(), mapRelativeDate(), mapCustomFrom(), mapCustomTo(), mapIncludeArchived(), mapThemeMode(codec: EnumCodec(ThemeMode.values)), mapWithPartners(), // Cleanup cleanupKeepFavorites(), cleanupKeepMediaType(codec: EnumCodec(AssetKeepType.values)), cleanupKeepAlbumIds>(codec: ListCodec(PrimitiveCodec.string)), cleanupCutoffDaysAgo(), cleanupDefaultsInitialized(), // Share shareFileType(codec: EnumCodec(ShareAssetType.values)), // Slideshow slideshowRepeat(), slideshowDuration(), slideshowLook(codec: EnumCodec(SlideshowLook.values)), slideshowDirection(codec: EnumCodec(SlideshowDirection.values)), // Feature message featureMessageSeenRelease(codec: SemVerCodec()); final ValueCodec? _codecOverride; const SettingsKey({ValueCodec? codec}) : _codecOverride = codec; ValueCodec get _codec => _codecOverride ?? ValueCodec.forType(T); String encode(T value) => _codec.encode(value); T decode(String raw) => _codec.decode(raw); }