Files
dmenu-admin/src/pages/roles/hooks/useRolesData.ts
T
hamid zarghami ac5276dbfc update role
2025-11-16 15:28:02 +03:30

51 lines
1.3 KiB
TypeScript

import * as api from "../service/RolesService";
import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query";
import type { CreateRoleType } from "../types/Types";
export const useGetRoles = (params?: api.GetRolesParams) => {
return useQuery({
queryKey: ["roles", params],
queryFn: () => api.getRoles(params),
});
};
export const useGetRoleDetails = (id: string) => {
return useQuery({
queryKey: ["roles", id],
queryFn: () => api.getRoleDetails(id),
enabled: !!id,
});
};
export const useDeleteRole = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: api.deleteRole,
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ["roles"] });
},
});
};
export const useCreateRole = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: api.createRole,
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ["roles"] });
},
});
};
export const useUpdateRole = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: ({ id, params }: { id: string; params: CreateRoleType }) =>
api.updateRole(id, params),
onSuccess: (_, { id }) => {
queryClient.invalidateQueries({ queryKey: ["roles"] });
queryClient.invalidateQueries({ queryKey: ["roles", id] });
},
});
};