Files
cymelle/orders-frontend/src/hooks/useUsers.ts
T
2026-06-13 18:12:53 +03:00

59 lines
1.7 KiB
TypeScript

import {createUser, disableUser, getCustomers, getDrivers, getUsers, updateUser} from "#/api/users";
import type {AdminUserRequest} from "#/types/user";
import {useMutation, useQuery, useQueryClient} from "@tanstack/react-query";
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}),
});
}