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(); static final defaultPrefs = PreferencesEntity( language: LanguageLocale.arAE, favoriteIndicators: [].toIList(), favoriteCountries: [].toIList(), favoriteReports: [].toIList(), doNotifyOnIndicatorUpdates: false, doNotifyOnCompetitivenessReportsUpdates: false, doNotifyOnCountryUpdates: false, ); @override Future build() async { final localPrefs = await _localRepo.get(); return localPrefs ?? defaultPrefs; } Future updatePreferences( PreferencesEntity Function(PreferencesEntity prefs) update, ) async { final updated = update(await future); await _localRepo.update(updated); state = AsyncData(updated); } }