mirror of
				https://github.com/immich-app/immich.git
				synced 2025-10-30 18:22:37 -04:00 
			
		
		
		
	* Try staggered layout for home page * Introduce setting for dynamic layout * Fix some provider related bugs * Make asset grouping configurable * Add translation keys, refactor group title * Rename enum values * Fix enum names * Reformat long if statement * Fix timezone related bug * Minor clean up * Fix unit test * Add second assets check back to home screen
		
			
				
	
	
		
			59 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
| import 'package:hive_flutter/hive_flutter.dart';
 | |
| import 'package:immich_mobile/constants/hive_box.dart';
 | |
| 
 | |
| enum AppSettingsEnum<T> {
 | |
|   loadPreview<bool>("loadPreview", true),
 | |
|   loadOriginal<bool>("loadOriginal", false),
 | |
|   themeMode<String>("themeMode", "system"), // "light","dark","system"
 | |
|   tilesPerRow<int>("tilesPerRow", 4),
 | |
|   dynamicLayout<bool>("dynamicLayout", false),
 | |
|   groupAssetsBy<int>("groupBy", 0),
 | |
|   uploadErrorNotificationGracePeriod<int>(
 | |
|     "uploadErrorNotificationGracePeriod",
 | |
|     2,
 | |
|   ),
 | |
|   backgroundBackupTotalProgress<bool>("backgroundBackupTotalProgress", true),
 | |
|   backgroundBackupSingleProgress<bool>("backgroundBackupSingleProgress", false),
 | |
|   storageIndicator<bool>("storageIndicator", true),
 | |
|   thumbnailCacheSize<int>("thumbnailCacheSize", 10000),
 | |
|   imageCacheSize<int>("imageCacheSize", 350),
 | |
|   albumThumbnailCacheSize<int>("albumThumbnailCacheSize", 200),
 | |
|   useExperimentalAssetGrid<bool>("useExperimentalAssetGrid", false);
 | |
| 
 | |
|   const AppSettingsEnum(this.hiveKey, this.defaultValue);
 | |
| 
 | |
|   final String hiveKey;
 | |
|   final T defaultValue;
 | |
| }
 | |
| 
 | |
| class AppSettingsService {
 | |
|   late final Box hiveBox;
 | |
| 
 | |
|   AppSettingsService() {
 | |
|     hiveBox = Hive.box(userSettingInfoBox);
 | |
|   }
 | |
| 
 | |
|   T getSetting<T>(AppSettingsEnum<T> settingType) {
 | |
|     if (!hiveBox.containsKey(settingType.hiveKey)) {
 | |
|       return _setDefault(settingType);
 | |
|     }
 | |
| 
 | |
|     var result = hiveBox.get(settingType.hiveKey);
 | |
| 
 | |
|     if (result is! T) {
 | |
|       return _setDefault(settingType);
 | |
|     }
 | |
| 
 | |
|     return result;
 | |
|   }
 | |
| 
 | |
|   setSetting<T>(AppSettingsEnum<T> settingType, T value) {
 | |
|     hiveBox.put(settingType.hiveKey, value);
 | |
|   }
 | |
| 
 | |
|   T _setDefault<T>(AppSettingsEnum<T> settingType) {
 | |
|     hiveBox.put(settingType.hiveKey, settingType.defaultValue);
 | |
|     return settingType.defaultValue;
 | |
|   }
 | |
| }
 |