import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../core/api/api_client.dart'; import '../core/auth/auth_state.dart'; import '../core/models/page_result.dart'; import '../models/inventory.dart'; import '../repositories/inventory_repository.dart'; final inventoryRepositoryProvider = Provider((ref) { return InventoryRepository(ref.watch(apiClientProvider)); }); final inventoryListProvider = AsyncNotifierProvider>( InventoryListNotifier.new, ); class InventoryListNotifier extends AsyncNotifier> { int _page = 1; int? _warehouseId; String _keyword = ''; @override Future> build() { ref.watch(authStateProvider.select((s) => s.user?.shopId)); return _fetch(); } Future> _fetch() { return ref.read(inventoryRepositoryProvider).listInventory( warehouseId: _warehouseId, keyword: _keyword.isEmpty ? null : _keyword, page: _page, pageSize: 50, ); } void setPage(int page) { _page = page; reload(); } void setWarehouseId(int? id) { _warehouseId = id; _page = 1; reload(); } void setKeyword(String keyword) { _keyword = keyword; _page = 1; reload(); } void reload() { state = const AsyncValue.loading(); _fetch().then( (result) => state = AsyncValue.data(result), onError: (e, st) => state = AsyncValue.error(e, st), ); } } final inventoryLogProvider = AsyncNotifierProvider>( InventoryLogNotifier.new, ); class InventoryLogNotifier extends AsyncNotifier> { int _page = 1; @override Future> build() { ref.watch(authStateProvider.select((s) => s.user?.shopId)); return _fetch(); } Future> _fetch() { return ref.read(inventoryRepositoryProvider).listLogs( page: _page, pageSize: 50, ); } void setPage(int page) { _page = page; reload(); } void reload() { state = const AsyncValue.loading(); _fetch().then( (result) => state = AsyncValue.data(result), onError: (e, st) => state = AsyncValue.error(e, st), ); } }