1
0
mirror of https://github.com/quay/quay.git synced 2026-01-27 18:42:52 +03:00
Files
quay/web/src/hooks/UseUpdateRepositoryPermissions.ts
Dave O'Connor f1d8558815 Add quay-ui (#1683)
Signed-off-by: Dave O'Connor <1656866+HammerMeetNail@users.noreply.github.com>
2022-12-20 08:38:16 -05:00

65 lines
1.8 KiB
TypeScript

import {useMutation, useQueryClient} from '@tanstack/react-query';
import {
bulkDeleteRepoPermissions,
bulkSetRepoPermissions,
RepoMember,
RepoRole,
} from 'src/resources/RepositoryResource';
export function useUpdateRepositoryPermissions(org: string, repo: string) {
const queryClient = useQueryClient();
const {
mutate: setPermissions,
isError: errorSetPermissions,
isSuccess: successSetPermissions,
reset: resetSetRepoPermissions,
} = useMutation(
async ({
members,
newRole,
}: {
members: RepoMember[] | RepoMember;
newRole: RepoRole;
}) => {
members = Array.isArray(members) ? members : [members];
return bulkSetRepoPermissions(members, newRole);
},
{
onSuccess: (_, variables) => {
queryClient.invalidateQueries(['teamrepopermissions']);
queryClient.invalidateQueries(['userrepopermissions']);
},
},
);
const {
mutate: deletePermissions,
isError: errorDeletePermissions,
isSuccess: successDeletePermissions,
reset: resetDeleteRepoPermissions,
} = useMutation(
async (members: RepoMember[] | RepoMember) => {
members = Array.isArray(members) ? members : [members];
return bulkDeleteRepoPermissions(members);
},
{
onSuccess: (_, variables) => {
queryClient.invalidateQueries(['teamrepopermissions']);
queryClient.invalidateQueries(['userrepopermissions']);
},
},
);
return {
setPermissions: setPermissions,
errorSetPermissions: errorSetPermissions,
successSetPermissions: successSetPermissions,
resetSetRepoPermissions: resetSetRepoPermissions,
deletePermissions: deletePermissions,
errorDeletePermissions: errorDeletePermissions,
successDeletePermissions: successDeletePermissions,
resetDeleteRepoPermissions: resetDeleteRepoPermissions,
};
}