import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:niogu_app/core/providers/app_provider.dart'; import 'package:niogu_app/features/goods/units/data/unit_repository_impl.dart'; import 'package:niogu_app/features/goods/units/domain/entities/unit.dart'; import 'package:niogu_app/features/goods/units/domain/repositories/i_unit_repository.dart'; import 'package:niogu_app/features/goods/units/presentation/controller/unit_controller.dart'; final unitRepositoryProvider = Provider((ref) { final appDatabase = ref.watch(appDatabaseProvider); return UnitRepositoryImpl(appDatabase); }); final unitStreamProvider = StreamProvider.autoDispose>((ref) { final unitRepository = ref.watch(unitRepositoryProvider); return unitRepository.watchUnits(); }); final unitSearchProvider = StateProvider.autoDispose((ref) => ''); final validateUnitProvider = Provider.autoDispose((ref) { final unitStreamAsync = ref.watch(unitStreamProvider); final unitSearchAsync = ref.watch(unitSearchProvider); return unitStreamAsync.maybeWhen( data: (units) { return units.where((unit) { return unit.name.trim().toLowerCase() == unitSearchAsync.trim().toLowerCase(); }).isEmpty; }, orElse: () => true, ); }); final unitControllerProvider = AsyncNotifierProvider.autoDispose( UnitController.new, );