Files
cymelle/orders-frontend/src/hooks/useUsers.ts
T
2026-06-14 13:19:39 +03:00

70 lines
1.6 KiB
TypeScript

import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import {
createUser,
disableUser,
getCustomers,
getDrivers,
getUsers,
updateUser,
} from "#/api/users";
import type { AdminUserRequest } from "#/types/user";
export const userQueryKeys = {
all: ["users"] as const,
list: () => [...userQueryKeys.all, "list"] as const,
customers: () => [...userQueryKeys.all, "customers"] as const,
drivers: () => [...userQueryKeys.all, "drivers"] as const,
};
export function useUsers() {
return useQuery({
queryKey: userQueryKeys.list(),
queryFn: ({ signal }) => getUsers(signal),
});
}
export function useCustomers() {
return useQuery({
queryKey: userQueryKeys.customers(),
queryFn: ({ signal }) => getCustomers(signal),
});
}
export function useDrivers() {
return useQuery({
queryKey: userQueryKeys.drivers(),
queryFn: ({ signal }) => getDrivers(signal),
});
}
export function useCreateUser() {
const queryClient = useQueryClient();
return useMutation({
mutationFn: createUser,
onSuccess: () =>
queryClient.invalidateQueries({ queryKey: userQueryKeys.all }),
});
}
export function useUpdateUser() {
const queryClient = useQueryClient();
return useMutation({
mutationFn: ({ id, request }: { id: string; request: AdminUserRequest }) =>
updateUser(id, request),
onSuccess: () =>
queryClient.invalidateQueries({ queryKey: userQueryKeys.all }),
});
}
export function useDisableUser() {
const queryClient = useQueryClient();
return useMutation({
mutationFn: disableUser,
onSuccess: () =>
queryClient.invalidateQueries({ queryKey: userQueryKeys.all }),
});
}