mirror of
https://github.com/andwati/cymelle.git
synced 2026-11-05 16:32:16 +00:00
70 lines
1.6 KiB
TypeScript
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 }),
|
|
});
|
|
}
|