mirror of
				https://github.com/immich-app/immich.git
				synced 2025-11-03 19:17:11 -05:00 
			
		
		
		
	* chore: bump dart sdk to 3.8 * chore: make build * make pigeon * chore: format files --------- Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
		
			
				
	
	
		
			58 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
import 'package:flutter/material.dart';
 | 
						|
import 'package:hooks_riverpod/hooks_riverpod.dart';
 | 
						|
 | 
						|
import 'package:immich_mobile/constants/colors.dart';
 | 
						|
import 'package:immich_mobile/theme/color_scheme.dart';
 | 
						|
import 'package:immich_mobile/theme/theme_data.dart';
 | 
						|
import 'package:immich_mobile/theme/dynamic_theme.dart';
 | 
						|
import 'package:immich_mobile/providers/app_settings.provider.dart';
 | 
						|
import 'package:immich_mobile/services/app_settings.service.dart';
 | 
						|
 | 
						|
final immichThemeModeProvider = StateProvider<ThemeMode>((ref) {
 | 
						|
  final themeMode = ref.watch(appSettingsServiceProvider).getSetting(AppSettingsEnum.themeMode);
 | 
						|
 | 
						|
  debugPrint("Current themeMode $themeMode");
 | 
						|
 | 
						|
  if (themeMode == ThemeMode.light.name) {
 | 
						|
    return ThemeMode.light;
 | 
						|
  } else if (themeMode == ThemeMode.dark.name) {
 | 
						|
    return ThemeMode.dark;
 | 
						|
  } else {
 | 
						|
    return ThemeMode.system;
 | 
						|
  }
 | 
						|
});
 | 
						|
 | 
						|
final immichThemePresetProvider = StateProvider<ImmichColorPreset>((ref) {
 | 
						|
  final appSettingsProvider = ref.watch(appSettingsServiceProvider);
 | 
						|
  final primaryColorPreset = appSettingsProvider.getSetting(AppSettingsEnum.primaryColor);
 | 
						|
 | 
						|
  debugPrint("Current theme preset $primaryColorPreset");
 | 
						|
 | 
						|
  try {
 | 
						|
    return ImmichColorPreset.values.firstWhere((e) => e.name == primaryColorPreset);
 | 
						|
  } catch (e) {
 | 
						|
    debugPrint("Theme preset $primaryColorPreset not found. Applying default preset.");
 | 
						|
    appSettingsProvider.setSetting(AppSettingsEnum.primaryColor, defaultColorPresetName);
 | 
						|
    return defaultColorPreset;
 | 
						|
  }
 | 
						|
});
 | 
						|
 | 
						|
final dynamicThemeSettingProvider = StateProvider<bool>((ref) {
 | 
						|
  return ref.watch(appSettingsServiceProvider).getSetting(AppSettingsEnum.dynamicTheme);
 | 
						|
});
 | 
						|
 | 
						|
final colorfulInterfaceSettingProvider = StateProvider<bool>((ref) {
 | 
						|
  return ref.watch(appSettingsServiceProvider).getSetting(AppSettingsEnum.colorfulInterface);
 | 
						|
});
 | 
						|
 | 
						|
// Provider for current selected theme
 | 
						|
final immichThemeProvider = StateProvider<ImmichTheme>((ref) {
 | 
						|
  final primaryColorPreset = ref.read(immichThemePresetProvider);
 | 
						|
  final useSystemColor = ref.watch(dynamicThemeSettingProvider);
 | 
						|
  final useColorfulInterface = ref.watch(colorfulInterfaceSettingProvider);
 | 
						|
  final ImmichTheme? dynamicTheme = DynamicTheme.theme;
 | 
						|
  final currentTheme = (useSystemColor && dynamicTheme != null) ? dynamicTheme : primaryColorPreset.themeOfPreset;
 | 
						|
 | 
						|
  return useColorfulInterface ? currentTheme : decolorizeSurfaces(theme: currentTheme);
 | 
						|
});
 |