Files
coder/site/src/api/queries/users.ts
T

82 lines
1.9 KiB
TypeScript

import { QueryClient } from "@tanstack/react-query";
import * as API from "api/api";
import { UpdateUserPasswordRequest, UsersRequest } from "api/typesGenerated";
export const users = (req: UsersRequest) => {
return {
queryKey: ["users", req],
queryFn: () => API.getUsers(req),
};
};
export const updatePassword = () => {
return {
mutationFn: ({
userId,
...request
}: UpdateUserPasswordRequest & { userId: string }) =>
API.updateUserPassword(userId, request),
};
};
export const createUser = (queryClient: QueryClient) => {
return {
mutationFn: API.createUser,
onSuccess: async () => {
await queryClient.invalidateQueries(["users"]);
},
};
};
export const createFirstUser = () => {
return {
mutationFn: API.createFirstUser,
};
};
export const suspendUser = (queryClient: QueryClient) => {
return {
mutationFn: API.suspendUser,
onSuccess: async () => {
await queryClient.invalidateQueries(["users"]);
},
};
};
export const activateUser = (queryClient: QueryClient) => {
return {
mutationFn: API.activateUser,
onSuccess: async () => {
await queryClient.invalidateQueries(["users"]);
},
};
};
export const deleteUser = (queryClient: QueryClient) => {
return {
mutationFn: API.deleteUser,
onSuccess: async () => {
await queryClient.invalidateQueries(["users"]);
},
};
};
export const updateRoles = (queryClient: QueryClient) => {
return {
mutationFn: ({ userId, roles }: { userId: string; roles: string[] }) =>
API.updateUserRoles(roles, userId),
onSuccess: async () => {
await queryClient.invalidateQueries(["users"]);
},
};
};
export const authMethods = () => {
return {
// Even the endpoint being /users/authmethods we don't want to revalidate it
// when users change so its better add a unique query key
queryKey: ["authMethods"],
queryFn: API.getAuthMethods,
};
};