39 lines
1.3 KiB
Dart
Executable File
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);
|
|
}
|
|
}
|