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

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

@@ -7,6 +7,8 @@ import '../../domain/repositories/warehouse_repository.dart';
enum WarehouseStatusFilter { all, activeOnly, inactiveOnly }
class WarehouseController extends ChangeNotifier {
static const int defaultPageSize = 20;
WarehouseController({required WarehouseRepository repository})
: _repository = repository;
@@ -17,6 +19,7 @@ class WarehouseController extends ChangeNotifier {
bool _isSubmitting = false;
String _query = '';
WarehouseStatusFilter _statusFilter = WarehouseStatusFilter.all;
int _pageSize = defaultPageSize;
String? _errorMessage;
PaginatedResult<Warehouse>? get result => _result;
@@ -24,6 +27,7 @@ class WarehouseController extends ChangeNotifier {
bool get isSubmitting => _isSubmitting;
String get query => _query;
WarehouseStatusFilter get statusFilter => _statusFilter;
int get pageSize => _pageSize;
String? get errorMessage => _errorMessage;
Future<void> fetch({int page = 1}) async {
@@ -38,11 +42,14 @@ class WarehouseController extends ChangeNotifier {
};
final response = await _repository.list(
page: page,
pageSize: _result?.pageSize ?? 20,
pageSize: _pageSize,
query: _query.isEmpty ? null : _query,
isActive: isActive,
);
_result = response;
if (response.pageSize > 0 && response.pageSize != _pageSize) {
_pageSize = response.pageSize;
}
} catch (e) {
_errorMessage = e.toString();
} finally {
@@ -52,15 +59,29 @@ class WarehouseController extends ChangeNotifier {
}
void updateQuery(String value) {
if (_query == value) {
return;
}
_query = value;
notifyListeners();
}
void updateStatusFilter(WarehouseStatusFilter filter) {
if (_statusFilter == filter) {
return;
}
_statusFilter = filter;
notifyListeners();
}
void updatePageSize(int size) {
if (size <= 0 || _pageSize == size) {
return;
}
_pageSize = size;
notifyListeners();
}
Future<Warehouse?> create(WarehouseInput input) async {
_setSubmitting(true);
try {