uaestats_fe/lib/domain/use_cases/preferences_use_case.dart
2026-05-25 18:01:41 +05:30

39 lines
1.3 KiB
Dart
Executable File

import 'dart:async';
import 'package:external_repos/external_repos.dart';
import 'package:fast_immutable_collections/fast_immutable_collections.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:uae_stat/config/injector.dart';
import 'package:uae_stat/domain/entities/preferences_entity.dart';
import 'package:uae_stat/domain/repos/t_local_preferences_repo.dart';
part 'preferences_use_case.g.dart';
@riverpod
class PreferencesUseCase extends _$PreferencesUseCase {
static final _localRepo = getIt.call<TLocalPreferencesRepo>();
static final defaultPrefs = PreferencesEntity(
language: LanguageLocale.arAE,
favoriteIndicators: <IndicatorEnum>[].toIList(),
favoriteCountries: <ISOCountry>[].toIList(),
favoriteReports: <String>[].toIList(),
doNotifyOnIndicatorUpdates: false,
doNotifyOnCompetitivenessReportsUpdates: false,
doNotifyOnCountryUpdates: false,
);
@override
Future<PreferencesEntity> build() async {
final localPrefs = await _localRepo.get();
return localPrefs ?? defaultPrefs;
}
Future<void> updatePreferences(
PreferencesEntity Function(PreferencesEntity prefs) update,
) async {
final updated = update(await future);
await _localRepo.update(updated);
state = AsyncData(updated);
}
}