import 'dart:async'; import 'package:external_repos/external_repos.dart'; import 'package:injectable/injectable.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:uae_stat/domain/repos/t_favorites_repo.dart'; @dev @prod @Injectable(as: TFavoritesRepo) class PFavoritesRepo implements TFavoritesRepo { static const _key = 'favorite_indicators'; Future> _load() async { final prefs = await SharedPreferences.getInstance(); final raw = prefs.getStringList(_key) ?? []; return raw .map( (s) => IndicatorEnum.values.firstWhere((id) => id.name == s), ) .toSet(); } Future _save(Set ids) async { final prefs = await SharedPreferences.getInstance(); await prefs.setStringList(_key, ids.map((e) => e.name).toList()); } @override FutureOr> getAll() => _load(); @override Future removeExisting(IndicatorEnum id) async { final favs = await _load(); favs.remove(id); await _save(favs); } @override Future addNew(IndicatorEnum id) async { final favs = await _load(); favs.add(id); await _save(favs); } }