계정 정보 다이얼로그 추가 및 전체 목록 페치 개선

This commit is contained in:
JiWoong Sul
2025-10-22 01:05:47 +09:00
parent 6b58effc83
commit f4dc83d441
44 changed files with 1636 additions and 362 deletions

View File

@@ -1,6 +1,7 @@
import 'package:flutter/foundation.dart';
import 'package:superport_v2/core/common/models/paginated_result.dart';
import 'package:superport_v2/core/network/failure.dart';
import 'package:superport_v2/core/common/models/paginated_result.dart';
import 'package:superport_v2/core/common/utils/pagination_utils.dart';
import '../../../../../core/permissions/permission_manager.dart';
import '../../../group/domain/entities/group.dart';
@@ -55,8 +56,11 @@ class UserController extends ChangeNotifier {
_isLoadingGroups = true;
notifyListeners();
try {
final response = await _groupRepository.list(page: 1, pageSize: 100);
_groups = response.items;
final groups = await fetchAllPaginatedItems<Group>(
request: (page, pageSize) =>
_groupRepository.list(page: page, pageSize: pageSize),
);
_groups = groups;
} catch (error) {
final failure = Failure.from(error);
_errorMessage = failure.describe();
@@ -72,13 +76,24 @@ class UserController extends ChangeNotifier {
_errorMessage = null;
notifyListeners();
try {
final previous = _result;
final int resolvedPage;
if (page < 1) {
resolvedPage = 1;
} else if (previous != null && previous.pageSize > 0) {
final calculated = (previous.total / previous.pageSize).ceil();
final maxPage = calculated < 1 ? 1 : calculated;
resolvedPage = page > maxPage ? maxPage : page;
} else {
resolvedPage = page;
}
final isActive = switch (_statusFilter) {
UserStatusFilter.all => null,
UserStatusFilter.activeOnly => true,
UserStatusFilter.inactiveOnly => false,
};
final response = await _userRepository.list(
page: page,
page: resolvedPage,
pageSize: _result?.pageSize ?? 20,
query: _query.isEmpty ? null : _query,
groupId: _groupFilter,