refactor: app metadata

This commit is contained in:
shenlong-tanwen
2026-04-24 19:23:21 +05:30
parent 8cff5883b5
commit cc56f86333
33 changed files with 14221 additions and 85 deletions
@@ -0,0 +1,32 @@
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/domain/models/config/app_config.dart';
import 'package:immich_mobile/domain/models/config/system_config.dart';
import 'package:immich_mobile/domain/models/metadata/system_metadata.dart';
import 'package:immich_mobile/domain/models/metadata_kind.dart';
import 'package:immich_mobile/infrastructure/repositories/cached_metadata.repository.dart';
final metadataProvider = Provider.autoDispose<CachedMetadataRepository>((_) => CachedMetadataRepository.instance);
final appConfigProvider = Provider.autoDispose<AppConfig>((ref) {
final subscription = ref.watch(metadataProvider).watch(MetadataKind.appConfig).listen((event) {
ref.state = event;
});
ref.onDispose(subscription.cancel);
return ref.watch(metadataProvider).read(MetadataKind.appConfig);
});
final systemConfigProvider = Provider.autoDispose<SystemConfig>((ref) {
final subscription = ref.watch(metadataProvider).watch(MetadataKind.systemConfig).listen((event) {
ref.state = event;
});
ref.onDispose(subscription.cancel);
return ref.watch(metadataProvider).read(MetadataKind.systemConfig);
});
final systemMetadataProvider = Provider.autoDispose<SystemMetadata>((ref) {
final subscription = ref.watch(metadataProvider).watch(MetadataKind.systemMetadata).listen((event) {
ref.state = event;
});
ref.onDispose(subscription.cancel);
return ref.watch(metadataProvider).read(MetadataKind.systemMetadata);
});
+5 -17
View File
@@ -1,27 +1,15 @@
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/providers/infrastructure/metadata.provider.dart';
import 'package:immich_mobile/services/app_settings.service.dart';
import 'package:immich_mobile/theme/color_scheme.dart';
import 'package:immich_mobile/theme/dynamic_theme.dart';
import 'package:immich_mobile/theme/theme_data.dart';
import 'package:immich_mobile/utils/debug_print.dart';
final immichThemeModeProvider = StateProvider<ThemeMode>((ref) {
final themeMode = ref.watch(appSettingsServiceProvider).getSetting(AppSettingsEnum.themeMode);
dPrint(() => "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 immichThemeModeProvider = StateProvider<ThemeMode>((ref) => ref.read(appConfigProvider).theme.mode);
final immichThemePresetProvider = StateProvider<ImmichColorPreset>((ref) {
final appSettingsProvider = ref.watch(appSettingsServiceProvider);