feat(ui): finished ui for identity additional privilege

This commit is contained in:
Akhil Mohan
2024-03-28 19:55:12 +05:30
parent 8529fac098
commit 5f84de039f
17 changed files with 569 additions and 279 deletions
@@ -0,0 +1,74 @@
import { packRules } from "@casl/ability/extra";
import { useMutation, useQueryClient } from "@tanstack/react-query";
import { apiRequest } from "@app/config/request";
import { workspaceKeys } from "../workspace/queries";
import {
TCreateIdentityProjectPrivilegeDTO,
TDeleteIdentityProjectPrivilegeDTO,
TIdentityProjectPrivilege,
TUpdateIdentityProjectPrivlegeDTO
} from "./types";
export const useCreateIdentityProjectAdditionalPrivilege = () => {
const queryClient = useQueryClient();
return useMutation<
{ privilege: TIdentityProjectPrivilege },
{},
TCreateIdentityProjectPrivilegeDTO
>({
mutationFn: async (dto) => {
const { data } = await apiRequest.post("/api/v1/additional-privilege/identity", {
...dto,
permissions: packRules(dto.permissions)
});
return data.privilege;
},
onSuccess: (_, { projectId }) => {
queryClient.invalidateQueries(workspaceKeys.getWorkspaceIdentityMemberships(projectId));
}
});
};
export const useUpdateIdentityProjectAdditionalPrivilege = () => {
const queryClient = useQueryClient();
return useMutation<
{ privilege: TIdentityProjectPrivilege },
{},
TUpdateIdentityProjectPrivlegeDTO
>({
mutationFn: async (dto) => {
const { data } = await apiRequest.patch(
`/api/v1/additional-privilege/identity/${dto.privilegeId}`,
{ ...dto, permissions: dto.permissions ? packRules(dto.permissions) : undefined }
);
return data.privilege;
},
onSuccess: (_, { projectId }) => {
queryClient.invalidateQueries(workspaceKeys.getWorkspaceIdentityMemberships(projectId));
}
});
};
export const useDeleteIdentityProjectAdditionalPrivilege = () => {
const queryClient = useQueryClient();
return useMutation<
{ privilege: TIdentityProjectPrivilege },
{},
TDeleteIdentityProjectPrivilegeDTO
>({
mutationFn: async (dto) => {
const { data } = await apiRequest.delete(
`/api/v1/additional-privilege/identity/${dto.privilegeId}`
);
return data.privilege;
},
onSuccess: (_, { projectId }) => {
queryClient.invalidateQueries(workspaceKeys.getWorkspaceIdentityMemberships(projectId));
}
});
};