import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../data/catalog/catalog_repository.dart'; import '../data/db/app_database.dart'; import '../domain/catalog/catalog_item.dart'; import '../domain/catalog/display_category.dart'; import 'providers.dart'; final catalogRepositoryProvider = Provider((ref) { return CatalogRepository(ref.watch(appDatabaseProvider)); }); /// 갤러리 진입 시 1회 로드. seed 가 끝난 가정 (bootstrap 이 보장). final catalogItemsProvider = FutureProvider>((ref) async { // bootstrap 가 끝난 후에만 의미 있음. await ref.watch(bootstrapProvider.future); return ref.watch(catalogRepositoryProvider).all(); }); /// 빈 카테고리 키는 결과에 미포함 — 갤러리는 결과 key 만 칩으로 렌더. final groupedByCategoryProvider = FutureProvider>>((ref) async { final items = await ref.watch(catalogItemsProvider.future); return groupByCategory(items); }); /// Preview 화면용. id → 단건. 미매칭 시 null. final catalogItemByIdProvider = FutureProvider.family((ref, id) async { return ref.watch(catalogRepositoryProvider).byId(id); }); /// reference id 리스트 → ReferenceRow 들. ids 비면 빈 리스트. final referencesByIdsProvider = FutureProvider.family, List>((ref, ids) async { return ref.watch(catalogRepositoryProvider).referencesByIds(ids); });