전역 구조 리팩터링 및 테스트 확장

This commit is contained in:
JiWoong Sul
2025-09-29 01:51:47 +09:00
parent c00c0c9ab2
commit fef7108479
70 changed files with 7709 additions and 3185 deletions

View File

@@ -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 {