misc: added pagination and moved to admin route

This commit is contained in:
Sheen Capadngan
2024-07-09 00:34:07 +08:00
parent f3a8fda254
commit c1b242db67
14 changed files with 276 additions and 177 deletions
+2 -2
View File
@@ -1,2 +1,2 @@
export { useCreateAdminUser, useUpdateServerConfig } from "./mutation";
export { useGetServerConfig } from "./queries";
export { useCreateAdminUser, useDeleteUser, useUpdateServerConfig } from "./mutation";
export { useAdminGetUsers, useGetServerConfig } from "./queries";
+17 -1
View File
@@ -4,7 +4,7 @@ import { apiRequest } from "@app/config/request";
import { organizationKeys } from "../organization/queries";
import { User } from "../users/types";
import { adminQueryKeys } from "./queries";
import { adminQueryKeys, adminStandaloneKeys } from "./queries";
import { TCreateAdminUserDTO, TServerConfig } from "./types";
export const useCreateAdminUser = () => {
@@ -43,3 +43,19 @@ export const useUpdateServerConfig = () => {
}
});
};
export const useDeleteUser = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: async (userId: string) => {
await apiRequest.delete(`/api/v1/admin/user-management/users/${userId}`);
return {};
},
onSuccess: () => {
queryClient.invalidateQueries({
queryKey: [adminStandaloneKeys.getUsers]
});
}
});
};
+30 -3
View File
@@ -1,11 +1,17 @@
import { useQuery, UseQueryOptions } from "@tanstack/react-query";
import { useInfiniteQuery, useQuery, UseQueryOptions } from "@tanstack/react-query";
import { apiRequest } from "@app/config/request";
import { TServerConfig } from "./types";
import { User } from "../types";
import { AdminGetUsersFilters, TServerConfig } from "./types";
export const adminStandaloneKeys = {
getUsers: "get-users"
};
export const adminQueryKeys = {
serverConfig: () => ["server-config"] as const
serverConfig: () => ["server-config"] as const,
getUsers: (filters: AdminGetUsersFilters) => [adminStandaloneKeys.getUsers, { filters }] as const
};
const fetchServerConfig = async () => {
@@ -32,3 +38,24 @@ export const useGetServerConfig = ({
...options,
enabled: options?.enabled ?? true
});
export const useAdminGetUsers = (filters: AdminGetUsersFilters) => {
return useInfiniteQuery({
queryKey: adminQueryKeys.getUsers(filters),
queryFn: async ({ pageParam }) => {
const { data } = await apiRequest.get<{ users: User[] }>(
"/api/v1/admin/user-management/users",
{
params: {
...filters,
offset: pageParam
}
}
);
return data.users;
},
getNextPageParam: (lastPage, pages) =>
lastPage.length !== 0 ? pages.length * filters.limit : undefined
});
};
+5
View File
@@ -37,3 +37,8 @@ export type TCreateAdminUserDTO = {
verifier: string;
salt: string;
};
export type AdminGetUsersFilters = {
limit: number;
searchTerm: string;
};
-2
View File
@@ -1,7 +1,6 @@
export {
useAddUserToWsE2EE,
useAddUserToWsNonE2EE,
useDeleteUser,
useSendEmailVerificationCode,
useVerifyEmailVerificationCode
} from "./mutation";
@@ -20,7 +19,6 @@ export {
useGetOrgUsers,
useGetUser,
useGetUserAction,
useListUsers,
useLogoutUser,
useRegisterUserAction,
useRevokeMySessions,
-14
View File
@@ -112,17 +112,3 @@ export const useUpdateUserProjectFavorites = () => {
}
});
};
export const useDeleteUser = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: async (userId: string) => {
await apiRequest.delete(`/api/v1/user/${userId}`);
return {};
},
onSuccess: () => {
queryClient.invalidateQueries(userKeys.listUsers);
}
});
};
-8
View File
@@ -41,14 +41,6 @@ export const fetchUserDetails = async () => {
export const useGetUser = () => useQuery(userKeys.getUser, fetchUserDetails);
export const fetchUsersList = async () => {
const { data } = await apiRequest.get<{ users: User[] }>("/api/v1/user/list");
return data.users;
};
export const useListUsers = () => useQuery(userKeys.listUsers, fetchUsersList);
export const useDeleteMe = () => {
const queryClient = useQueryClient();