import 'package:fintracker_api/fintracker_api.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../../core/api/api_client.dart'; import '../../core/cache/cached.dart'; /// Every account, archived included — screens decide what to show. See /// `docs/ai/offline-cache.md`: Счета reads `.data` and shows the offline banner; /// `accountNamesProvider` and the other consumers (Транзакции, События) just unwrap `.data`. final accountsProvider = FutureProvider.autoDispose>>(( ref, ) async { final r = await ref.watch(apiProvider).getAccountsApi().accountsList(); return Cached( r.data ?? const [], fetchedAt: r.extra['fetchedAt'] as DateTime?, ); }); /// `account_id -> name`, for screens that only carry the id (transactions, rules). final accountNamesProvider = Provider.autoDispose>((ref) { final accounts = ref.watch(accountsProvider).valueOrNull?.data ?? const []; return {for (final a in accounts) a.id: a.name}; });