Files
dkala-admin/src/pages/admin/hooks/useAdminData.ts
T
2026-02-07 16:20:18 +03:30

59 lines
1.4 KiB
TypeScript

import * as api from "../service/AdminService";
import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query";
import type { GetAdminsParams, CreateAdminType } from "../types/Types";
export const useGetAdmins = (params?: GetAdminsParams) => {
return useQuery({
queryKey: ["admins", params],
queryFn: () => api.getAdmins(params),
});
};
export const useDeleteAdmin = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: api.deleteAdmin,
onSuccess: () => {
queryClient.invalidateQueries({
queryKey: ["admins"],
});
},
});
};
export const useCreateAdmin = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: api.createAdmin,
onSuccess: () => {
queryClient.invalidateQueries({
queryKey: ["admins"],
});
},
});
};
export const useUpdateAdmin = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: ({ id, params }: { id: string; params: CreateAdminType }) =>
api.updateAdmin(id, params),
onSuccess: (_, { id }) => {
queryClient.invalidateQueries({
queryKey: ["admins"],
});
queryClient.invalidateQueries({
queryKey: ["admins", id],
});
},
});
};
export const useGetAdminById = (id: string) => {
return useQuery({
queryKey: ["admin", id],
queryFn: () => api.getAdminById(id),
enabled: !!id,
});
};