From d0f0e593349c08c644baedead7bf820eeab5b0f8 Mon Sep 17 00:00:00 2001 From: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com> Date: Tue, 12 May 2026 03:10:36 +0530 Subject: [PATCH] remove name from key --- mobile/lib/domain/models/metadata_key.dart | 98 +++++-------- .../repositories/metadata.repository.dart | 131 +++++++++--------- 2 files changed, 100 insertions(+), 129 deletions(-) diff --git a/mobile/lib/domain/models/metadata_key.dart b/mobile/lib/domain/models/metadata_key.dart index 3ad553a17d..3c46838601 100644 --- a/mobile/lib/domain/models/metadata_key.dart +++ b/mobile/lib/domain/models/metadata_key.dart @@ -20,94 +20,72 @@ enum MetadataDomain { enum MetadataKey { // Theme - themePrimaryColor(.appConfig, 'theme.primaryColor', .indigo, _EnumCodec(ImmichColorPreset.values)), - themeMode(.appConfig, 'theme.mode', .system, _EnumCodec(ThemeMode.values)), - themeDynamic(.appConfig, 'theme.dynamic', false), - themeColorfulInterface(.appConfig, 'theme.colorfulInterface', true), + themePrimaryColor(.appConfig, .indigo, _EnumCodec(ImmichColorPreset.values)), + themeMode(.appConfig, .system, _EnumCodec(ThemeMode.values)), + themeDynamic(.appConfig, false), + themeColorfulInterface(.appConfig, true), // Image - imagePreferRemote(.appConfig, 'image.preferRemote', false), - imageLoadOriginal(.appConfig, 'image.loadOriginal', false), + imagePreferRemote(.appConfig, false), + imageLoadOriginal(.appConfig, false), // Viewer - viewerLoopVideo(.appConfig, 'viewer.loopVideo', true), - viewerLoadOriginalVideo(.appConfig, 'viewer.loadOriginalVideo', false), - viewerAutoPlayVideo(.appConfig, 'viewer.autoPlayVideo', true), - viewerTapToNavigate(.appConfig, 'viewer.tapToNavigate', false), + viewerLoopVideo(.appConfig, true), + viewerLoadOriginalVideo(.appConfig, false), + viewerAutoPlayVideo(.appConfig, true), + viewerTapToNavigate(.appConfig, false), // Network - networkAutoEndpointSwitching(.systemConfig, 'network.autoEndpointSwitching', false), - networkPreferredWifiName(.systemConfig, 'network.preferredWifiName', ''), - networkLocalEndpoint(.systemConfig, 'network.localEndpoint', ''), - networkExternalEndpointList>( - .systemConfig, - 'network.externalEndpointList', - [], - _ListCodec(_PrimitiveCodec.string), - ), + networkAutoEndpointSwitching(.systemConfig, false), + networkPreferredWifiName(.systemConfig, ''), + networkLocalEndpoint(.systemConfig, ''), + networkExternalEndpointList>(.systemConfig, [], _ListCodec(_PrimitiveCodec.string)), networkCustomHeaders>( .systemConfig, - 'network.customHeaders', {}, _MapCodec(_PrimitiveCodec.string, _PrimitiveCodec.string), ), // Album - albumSortMode( - .appConfig, - 'album.sortMode', - AlbumSortMode.mostRecent, - _EnumCodec(AlbumSortMode.values), - ), - albumIsReverse(.appConfig, 'album.isReverse', true), - albumIsGrid(.appConfig, 'album.isGrid', false), + albumSortMode(.appConfig, AlbumSortMode.mostRecent, _EnumCodec(AlbumSortMode.values)), + albumIsReverse(.appConfig, true), + albumIsGrid(.appConfig, false), // Backup - backupEnabled(.appConfig, 'backup.enabled', false), - backupUseCellularForVideos(.appConfig, 'backup.useCellularForVideos', false), - backupUseCellularForPhotos(.appConfig, 'backup.useCellularForPhotos', false), - backupRequireCharging(.appConfig, 'backup.requireCharging', false), - backupTriggerDelay(.appConfig, 'backup.triggerDelay', 30), - backupSyncAlbums(.appConfig, 'backup.syncAlbums', false), + backupEnabled(.appConfig, false), + backupUseCellularForVideos(.appConfig, false), + backupUseCellularForPhotos(.appConfig, false), + backupRequireCharging(.appConfig, false), + backupTriggerDelay(.appConfig, 30), + backupSyncAlbums(.appConfig, false), // Timeline - timelineTilesPerRow(.appConfig, 'timeline.tilesPerRow', 4), - timelineGroupAssetsBy( - .appConfig, - 'timeline.groupAssetsBy', - GroupAssetsBy.day, - _EnumCodec(GroupAssetsBy.values), - ), - timelineStorageIndicator(.appConfig, 'timeline.storageIndicator', true), + timelineTilesPerRow(.appConfig, 4), + timelineGroupAssetsBy(.appConfig, GroupAssetsBy.day, _EnumCodec(GroupAssetsBy.values)), + timelineStorageIndicator(.appConfig, true), // Log - logLevel(.systemConfig, 'log.level', .info, _EnumCodec(LogLevel.values)), + logLevel(.systemConfig, .info, _EnumCodec(LogLevel.values)), // Map - mapShowFavoriteOnly(.appConfig, 'map.showFavoriteOnly', false), - mapRelativeDate(.appConfig, 'map.relativeDate', 0), - mapIncludeArchived(.appConfig, 'map.includeArchived', false), - mapThemeMode(.appConfig, 'map.themeMode', .system, _EnumCodec(ThemeMode.values)), - mapWithPartners(.appConfig, 'map.withPartners', false), + mapShowFavoriteOnly(.appConfig, false), + mapRelativeDate(.appConfig, 0), + mapIncludeArchived(.appConfig, false), + mapThemeMode(.appConfig, .system, _EnumCodec(ThemeMode.values)), + mapWithPartners(.appConfig, false), // Cleanup - cleanupKeepFavorites(.appConfig, 'cleanup.keepFavorites', true), - cleanupKeepMediaType( - .appConfig, - 'cleanup.keepMediaType', - AssetKeepType.none, - _EnumCodec(AssetKeepType.values), - ), - cleanupKeepAlbumIds>(.appConfig, 'cleanup.keepAlbumIds', [], _ListCodec(_PrimitiveCodec.string)), - cleanupCutoffDaysAgo(.appConfig, 'cleanup.cutoffDaysAgo', -1), - cleanupDefaultsInitialized(.appConfig, 'cleanup.defaultsInitialized', false); + cleanupKeepFavorites(.appConfig, true), + cleanupKeepMediaType(.appConfig, AssetKeepType.none, _EnumCodec(AssetKeepType.values)), + cleanupKeepAlbumIds>(.appConfig, [], _ListCodec(_PrimitiveCodec.string)), + cleanupCutoffDaysAgo(.appConfig, -1), + cleanupDefaultsInitialized(.appConfig, false); final MetadataDomain domain; - final String name; final T defaultValue; final _MetadataCodec? _codecOverride; - const MetadataKey(this.domain, this.name, this.defaultValue, [this._codecOverride]); + const MetadataKey(this.domain, this.defaultValue, [this._codecOverride]); String get key => '${domain.prefix}.$name'; diff --git a/mobile/lib/infrastructure/repositories/metadata.repository.dart b/mobile/lib/infrastructure/repositories/metadata.repository.dart index 2ad59db174..5193626536 100644 --- a/mobile/lib/infrastructure/repositories/metadata.repository.dart +++ b/mobile/lib/infrastructure/repositories/metadata.repository.dart @@ -75,7 +75,10 @@ class MetadataRepository extends DriftDatabaseRepository { final query = _db.select(_db.metadataEntity)..where((t) => t.key.like('${domain.prefix}.%')); return query.watch().map((rows) { _hydrateCache(rows); - return domain.config(this); + return switch (domain) { + .appConfig => _appConfig as T, + .systemConfig => _systemConfig as T, + }; }); } @@ -91,77 +94,67 @@ class MetadataRepository extends DriftDatabaseRepository { void _updateCache(MetadataKey key, T value) { if (_cache[key] == value) return; _cache[key] = value; - key.domain.rebuild(this); - } -} -extension on MetadataDomain { - T config(MetadataRepository repo) => switch (this) { - .appConfig => repo._appConfig as T, - .systemConfig => repo._systemConfig as T, - }; - - void rebuild(MetadataRepository repo) { - switch (this) { + switch (key.domain) { case .appConfig: - repo._appConfig = .new( - theme: .new( - mode: repo._read(.themeMode), - primaryColor: repo._read(.themePrimaryColor), - dynamicTheme: repo._read(.themeDynamic), - colorfulInterface: repo._read(.themeColorfulInterface), - ), - cleanup: .new( - keepFavorites: repo._read(.cleanupKeepFavorites), - keepMediaType: repo._read(.cleanupKeepMediaType), - keepAlbumIds: repo._read(.cleanupKeepAlbumIds), - cutoffDaysAgo: repo._read(.cleanupCutoffDaysAgo), - defaultsInitialized: repo._read(.cleanupDefaultsInitialized), - ), - map: .new( - relativeDays: repo._read(.mapRelativeDate), - favoritesOnly: repo._read(.mapShowFavoriteOnly), - includeArchived: repo._read(.mapIncludeArchived), - themeMode: repo._read(.mapThemeMode), - withPartners: repo._read(.mapWithPartners), - ), - timeline: .new( - tilesPerRow: repo._read(.timelineTilesPerRow), - groupAssetsBy: repo._read(.timelineGroupAssetsBy), - storageIndicator: repo._read(.timelineStorageIndicator), - ), - image: .new(preferRemote: repo._read(.imagePreferRemote), loadOriginal: repo._read(.imageLoadOriginal)), - viewer: .new( - loopVideo: repo._read(.viewerLoopVideo), - loadOriginalVideo: repo._read(.viewerLoadOriginalVideo), - autoPlayVideo: repo._read(.viewerAutoPlayVideo), - tapToNavigate: repo._read(.viewerTapToNavigate), - ), - album: .new( - sortMode: repo._read(.albumSortMode), - isReverse: repo._read(.albumIsReverse), - isGrid: repo._read(.albumIsGrid), - ), - backup: .new( - enabled: repo._read(.backupEnabled), - useCellularForVideos: repo._read(.backupUseCellularForVideos), - useCellularForPhotos: repo._read(.backupUseCellularForPhotos), - requireCharging: repo._read(.backupRequireCharging), - triggerDelay: repo._read(.backupTriggerDelay), - syncAlbums: repo._read(.backupSyncAlbums), - ), - ); + _appConfig = _buildAppConfig(); case .systemConfig: - repo._systemConfig = .new( - logLevel: repo._read(.logLevel), - network: .new( - autoEndpointSwitching: repo._read(.networkAutoEndpointSwitching), - preferredWifiName: repo._read(.networkPreferredWifiName).nullIfEmpty, - localEndpoint: repo._read(.networkLocalEndpoint).nullIfEmpty, - externalEndpointList: repo._read(.networkExternalEndpointList), - customHeaders: repo._read(.networkCustomHeaders), - ), - ); + _systemConfig = _buildSystemConfig(); } } + + AppConfig _buildAppConfig() => .new( + theme: .new( + mode: _read(.themeMode), + primaryColor: _read(.themePrimaryColor), + dynamicTheme: _read(.themeDynamic), + colorfulInterface: _read(.themeColorfulInterface), + ), + cleanup: .new( + keepFavorites: _read(.cleanupKeepFavorites), + keepMediaType: _read(.cleanupKeepMediaType), + keepAlbumIds: _read(.cleanupKeepAlbumIds), + cutoffDaysAgo: _read(.cleanupCutoffDaysAgo), + defaultsInitialized: _read(.cleanupDefaultsInitialized), + ), + map: .new( + relativeDays: _read(.mapRelativeDate), + favoritesOnly: _read(.mapShowFavoriteOnly), + includeArchived: _read(.mapIncludeArchived), + themeMode: _read(.mapThemeMode), + withPartners: _read(.mapWithPartners), + ), + timeline: .new( + tilesPerRow: _read(.timelineTilesPerRow), + groupAssetsBy: _read(.timelineGroupAssetsBy), + storageIndicator: _read(.timelineStorageIndicator), + ), + image: .new(preferRemote: _read(.imagePreferRemote), loadOriginal: _read(.imageLoadOriginal)), + viewer: .new( + loopVideo: _read(.viewerLoopVideo), + loadOriginalVideo: _read(.viewerLoadOriginalVideo), + autoPlayVideo: _read(.viewerAutoPlayVideo), + tapToNavigate: _read(.viewerTapToNavigate), + ), + album: .new(sortMode: _read(.albumSortMode), isReverse: _read(.albumIsReverse), isGrid: _read(.albumIsGrid)), + backup: .new( + enabled: _read(.backupEnabled), + useCellularForVideos: _read(.backupUseCellularForVideos), + useCellularForPhotos: _read(.backupUseCellularForPhotos), + requireCharging: _read(.backupRequireCharging), + triggerDelay: _read(.backupTriggerDelay), + syncAlbums: _read(.backupSyncAlbums), + ), + ); + + SystemConfig _buildSystemConfig() => .new( + logLevel: _read(.logLevel), + network: .new( + autoEndpointSwitching: _read(.networkAutoEndpointSwitching), + preferredWifiName: _read(.networkPreferredWifiName).nullIfEmpty, + localEndpoint: _read(.networkLocalEndpoint).nullIfEmpty, + externalEndpointList: _read(.networkExternalEndpointList), + customHeaders: _read(.networkCustomHeaders), + ), + ); }