Skip to content

Commit 84262a3

Browse files
authored
Merge pull request #192 from CSE-Shaco/develop
fix(user-admin): 권한별 정렬 개선
2 parents 4a938df + 086e257 commit 84262a3

File tree

1 file changed

+19
-8
lines changed

1 file changed

+19
-8
lines changed

src/app/admin/member-manager/page.jsx

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,20 @@ export default function AdminUsersPage() {
118118
createdAt: 'createdAt', // 백업
119119
}), []);
120120

121+
const handleSortChange = useCallback((d) => {
122+
setPendingSort((prev) => {
123+
const isNewColumn = prev.column !== d.column;
124+
let nextDirection = d.direction;
125+
126+
if (isNewColumn) {
127+
if (d.column === 'userRole') nextDirection = 'descending';
128+
// 새 컬럼이면 페이지 리셋
129+
setPage(1);
130+
}
131+
return {column: d.column, direction: nextDirection};
132+
});
133+
}, [setPage]);
134+
121135
const fetchUsers = useCallback(async (force = false) => {
122136
setErr('');
123137
const keyNow = JSON.stringify({
@@ -165,15 +179,12 @@ export default function AdminUsersPage() {
165179
}
166180
}, [apiClient, page, rowsPerPage, query, sortDescriptor, sortColMap]);
167181

168-
// 최초 1회 강제 호출
169-
useEffect(() => {
170-
fetchUsers(true);
171-
// eslint-disable-next-line react-hooks/exhaustive-deps
172-
}, []);
182+
const didInitRef = useRef(false);
173183

174-
// 의존성 변경 시, 캐시키 달라지면 요청
175184
useEffect(() => {
176-
fetchUsers();
185+
if (didInitRef.current) return;
186+
didInitRef.current = true;
187+
fetchUsers(true);
177188
}, [fetchUsers]);
178189

179190
// 테이블 정렬 디바운스 -> 실제 sortDescriptor 적용
@@ -259,7 +270,7 @@ export default function AdminUsersPage() {
259270
aria-label="Users table"
260271
className="dark"
261272
sortDescriptor={pendingSort}
262-
onSortChange={setPendingSort}
273+
onSortChange={handleSortChange}
263274
bottomContent={<AdminTableBottomContent page={page} totalPages={totalPages} totalUsers={totalUsers}
264275
onChangePage={setPage}/>}
265276
>

0 commit comments

Comments
 (0)