From 2c6decaf6ef2275af685d0f3d2673e8e3cd867c5 Mon Sep 17 00:00:00 2001 From: Sheen Capadngan Date: Tue, 9 Jul 2024 01:11:24 +0800 Subject: [PATCH] misc: addressed comments --- backend/src/server/routes/v1/admin-router.ts | 2 +- .../views/admin/DashboardPage/UserPanel.tsx | 135 +++++++++--------- 2 files changed, 68 insertions(+), 69 deletions(-) diff --git a/backend/src/server/routes/v1/admin-router.ts b/backend/src/server/routes/v1/admin-router.ts index 0169b15c0..6e41df946 100644 --- a/backend/src/server/routes/v1/admin-router.ts +++ b/backend/src/server/routes/v1/admin-router.ts @@ -93,7 +93,7 @@ export const registerAdminRouter = async (server: FastifyZodProvider) => { querystring: z.object({ searchTerm: z.string().default(""), offset: z.coerce.number().default(0), - limit: z.coerce.number().default(20) + limit: z.coerce.number().max(100).default(20) }), response: { 200: z.object({ diff --git a/frontend/src/views/admin/DashboardPage/UserPanel.tsx b/frontend/src/views/admin/DashboardPage/UserPanel.tsx index 85561f07a..733d52624 100644 --- a/frontend/src/views/admin/DashboardPage/UserPanel.tsx +++ b/frontend/src/views/admin/DashboardPage/UserPanel.tsx @@ -24,10 +24,8 @@ import { useAdminDeleteUser, useAdminGetUsers } from "@app/hooks/api"; import { UsePopUpState } from "@app/hooks/usePopUp"; const UserPanelTable = ({ - searchUserFilter, handlePopUpOpen }: { - searchUserFilter: string; handlePopUpOpen: ( popUpName: keyof UsePopUpState<["removeUser"]>, data: { @@ -36,6 +34,7 @@ const UserPanelTable = ({ } ) => void; }) => { + const [searchUserFilter, setSearchUserFilter] = useState(""); const { user } = useUser(); const userId = user?.id || ""; const debounedSearchTerm = useDebounce(searchUserFilter, 500); @@ -47,64 +46,72 @@ const UserPanelTable = ({ const isEmpty = !isLoading && !data?.pages?.[0].length; return ( -
- - - - - - - - - - {isLoading && } - {!isLoading && - data?.pages?.map((users) => - users.map(({ username, email, firstName, lastName, id }) => { - const name = firstName || lastName ? `${firstName} ${lastName}` : "-"; + <> + setSearchUserFilter(e.target.value)} + leftIcon={} + placeholder="Search users..." + /> +
+ +
NameUsername -
+ + + + + + + + {isLoading && } + {!isLoading && + data?.pages?.map((users) => + users.map(({ username, email, firstName, lastName, id }) => { + const name = firstName || lastName ? `${firstName} ${lastName}` : "-"; - return ( - - - - - - ); - }) - )} - -
NameUsername +
{name}{email} - {userId !== id && ( -
- handlePopUpOpen("removeUser", { username, id })} - > - - -
- )} -
- {!isLoading && isEmpty && } -
- {!isEmpty && ( - - )} -
+ return ( + + {name} + {email} + + {userId !== id && ( +
+ handlePopUpOpen("removeUser", { username, id })} + > + + +
+ )} + + + ); + }) + )} + + + {!isLoading && isEmpty && } + + {!isEmpty && ( + + )} + + ); }; @@ -113,8 +120,6 @@ export const UserPanel = () => { "removeUser" ] as const); - const [searchUserFilter, setSearchUserFilter] = useState(""); - const { mutateAsync: deleteUser } = useAdminDeleteUser(); const handleRemoveUser = async () => { @@ -141,13 +146,7 @@ export const UserPanel = () => {

Users

- setSearchUserFilter(e.target.value)} - leftIcon={} - placeholder="Search users..." - /> - +