전역 구조 리팩터링 및 테스트 확장
This commit is contained in:
@@ -11,6 +11,8 @@ import '../../domain/repositories/product_repository.dart';
|
||||
enum ProductStatusFilter { all, activeOnly, inactiveOnly }
|
||||
|
||||
class ProductController extends ChangeNotifier {
|
||||
static const int defaultPageSize = 20;
|
||||
|
||||
ProductController({
|
||||
required ProductRepository productRepository,
|
||||
required VendorRepository vendorRepository,
|
||||
@@ -31,6 +33,7 @@ class ProductController extends ChangeNotifier {
|
||||
int? _vendorFilter;
|
||||
int? _uomFilter;
|
||||
ProductStatusFilter _statusFilter = ProductStatusFilter.all;
|
||||
int _pageSize = defaultPageSize;
|
||||
String? _errorMessage;
|
||||
|
||||
List<Vendor> _vendorOptions = const [];
|
||||
@@ -44,6 +47,7 @@ class ProductController extends ChangeNotifier {
|
||||
int? get vendorFilter => _vendorFilter;
|
||||
int? get uomFilter => _uomFilter;
|
||||
ProductStatusFilter get statusFilter => _statusFilter;
|
||||
int get pageSize => _pageSize;
|
||||
String? get errorMessage => _errorMessage;
|
||||
List<Vendor> get vendorOptions => _vendorOptions;
|
||||
List<Uom> get uomOptions => _uomOptions;
|
||||
@@ -60,13 +64,16 @@ class ProductController extends ChangeNotifier {
|
||||
};
|
||||
final response = await _productRepository.list(
|
||||
page: page,
|
||||
pageSize: _result?.pageSize ?? 20,
|
||||
pageSize: _pageSize,
|
||||
query: _query.isEmpty ? null : _query,
|
||||
vendorId: _vendorFilter,
|
||||
uomId: _uomFilter,
|
||||
isActive: isActive,
|
||||
);
|
||||
_result = response;
|
||||
if (response.pageSize > 0 && response.pageSize != _pageSize) {
|
||||
_pageSize = response.pageSize;
|
||||
}
|
||||
} catch (e) {
|
||||
_errorMessage = e.toString();
|
||||
} finally {
|
||||
@@ -92,25 +99,45 @@ class ProductController extends ChangeNotifier {
|
||||
}
|
||||
|
||||
void updateQuery(String value) {
|
||||
if (_query == value) {
|
||||
return;
|
||||
}
|
||||
_query = value;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
void updateVendorFilter(int? vendorId) {
|
||||
if (_vendorFilter == vendorId) {
|
||||
return;
|
||||
}
|
||||
_vendorFilter = vendorId;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
void updateUomFilter(int? uomId) {
|
||||
if (_uomFilter == uomId) {
|
||||
return;
|
||||
}
|
||||
_uomFilter = uomId;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
void updateStatusFilter(ProductStatusFilter filter) {
|
||||
if (_statusFilter == filter) {
|
||||
return;
|
||||
}
|
||||
_statusFilter = filter;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
void updatePageSize(int size) {
|
||||
if (size <= 0 || _pageSize == size) {
|
||||
return;
|
||||
}
|
||||
_pageSize = size;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
Future<Product?> create(ProductInput input) async {
|
||||
_setSubmitting(true);
|
||||
try {
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user