From 67691fc24d1afe00bc5d047d7b1ff7cf926c8318 Mon Sep 17 00:00:00 2001 From: hailin Date: Sat, 7 Mar 2026 02:46:04 -0800 Subject: [PATCH] fix(users): handle {data, total} response shape from listUsers API The backend returns { data: User[], total: number } but the frontend was treating usersData directly as User[], causing filteredUsers.map to throw 'not a function' when the page loaded. Co-Authored-By: Claude Sonnet 4.6 --- it0-web-admin/src/app/(admin)/users/page.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/it0-web-admin/src/app/(admin)/users/page.tsx b/it0-web-admin/src/app/(admin)/users/page.tsx index 86fc5b9..1bf233d 100644 --- a/it0-web-admin/src/app/(admin)/users/page.tsx +++ b/it0-web-admin/src/app/(admin)/users/page.tsx @@ -24,7 +24,7 @@ interface User { createdAt: string; } -type UsersResponse = User[]; +type UsersResponse = { data: User[]; total: number } | User[]; interface UserFormData { displayName: string; @@ -484,7 +484,9 @@ export default function UsersPage() { queryFn: () => apiClient('/api/v1/auth/users'), }); - const allUsers = usersData?? []; + const allUsers: User[] = Array.isArray(usersData) + ? usersData + : (usersData as { data: User[] } | undefined)?.data ?? []; // Filter --------------------------------------------------------------- const filteredUsers = useMemo(() => {