Add server permission management

This commit is contained in:
jeffvli
2022-11-14 01:13:54 -08:00
parent 1babcc40ee
commit c54eea4382
16 changed files with 594 additions and 43 deletions
+5
View File
@@ -2,3 +2,8 @@ export * from './mutations/use-create-server';
export * from './components/add-server-form';
export * from './components/server-list';
export * from './queries/use-server-list';
export * from './mutations/create-server-folder-permission';
export * from './mutations/delete-server-folder-permission';
export * from './mutations/update-server-permission';
export * from './mutations/create-server-permission';
export * from './mutations/delete-server-permission';
@@ -0,0 +1,31 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { AxiosError } from 'axios';
import { api } from '@/renderer/api';
import { queryKeys } from '@/renderer/api/query-keys';
import { CreateServerFolderPermissionBody } from '@/renderer/api/servers.api';
import { ApiError, NullResponse } from '@/renderer/api/types';
import { UserListResponse } from '@/renderer/api/users.api';
export const useCreateServerFolderPermission = () => {
const queryClient = useQueryClient();
const mutation = useMutation<
NullResponse,
AxiosError<ApiError>,
{
body: CreateServerFolderPermissionBody;
query: { folderId: string; serverId: string };
},
{ previous: UserListResponse | undefined }
>({
mutationFn: ({ query, body }) =>
api.servers.createServerFolderPermission(query, body),
onSuccess: (_data, variables) => {
queryClient.invalidateQueries(
queryKeys.users.detail(variables.body.userId)
);
},
});
return mutation;
};
@@ -0,0 +1,30 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { AxiosError } from 'axios';
import { api } from '@/renderer/api';
import { queryKeys } from '@/renderer/api/query-keys';
import { CreateServerPermissionBody } from '@/renderer/api/servers.api';
import { ApiError, NullResponse } from '@/renderer/api/types';
export const useCreateServerPermission = () => {
const queryClient = useQueryClient();
const mutation = useMutation<
NullResponse,
AxiosError<ApiError>,
{
body: CreateServerPermissionBody;
query: { serverId: string };
},
undefined
>({
mutationFn: ({ query, body }) =>
api.servers.createServerPermission(query, body),
onSuccess: (_data, variables) => {
queryClient.invalidateQueries(
queryKeys.users.detail(variables.body.userId)
);
},
});
return mutation;
};
@@ -0,0 +1,26 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { AxiosError } from 'axios';
import { api } from '@/renderer/api';
import { queryKeys } from '@/renderer/api/query-keys';
import { ApiError, NullResponse } from '@/renderer/api/types';
export const useDeleteServerFolderPermission = () => {
const queryClient = useQueryClient();
const mutation = useMutation<
NullResponse,
AxiosError<ApiError>,
{
query: { folderId: string; folderPermissionId: string; serverId: string };
userId: string;
},
undefined
>({
mutationFn: ({ query }) => api.servers.deleteServerFolderPermission(query),
onSuccess: (_data, variables) => {
queryClient.invalidateQueries(queryKeys.users.detail(variables.userId));
},
});
return mutation;
};
@@ -0,0 +1,23 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { AxiosError } from 'axios';
import { api } from '@/renderer/api';
import { queryKeys } from '@/renderer/api/query-keys';
import { ApiError, NullResponse } from '@/renderer/api/types';
export const useDeleteServerPermission = () => {
const queryClient = useQueryClient();
const mutation = useMutation<
NullResponse,
AxiosError<ApiError>,
{ query: { permissionId: string; serverId: string }; userId: string },
undefined
>({
mutationFn: ({ query }) => api.servers.deleteServerPermission(query),
onSuccess: (_data, variables) => {
queryClient.invalidateQueries(queryKeys.users.detail(variables.userId));
},
});
return mutation;
};
@@ -0,0 +1,29 @@
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { AxiosError } from 'axios';
import { api } from '@/renderer/api';
import { queryKeys } from '@/renderer/api/query-keys';
import { UpdateServerPermissionBody } from '@/renderer/api/servers.api';
import { ApiError, NullResponse } from '@/renderer/api/types';
export const useUpdateServerPermission = () => {
const queryClient = useQueryClient();
const mutation = useMutation<
NullResponse,
AxiosError<ApiError>,
{
body: UpdateServerPermissionBody;
query: { permissionId: string; serverId: string };
userId: string;
},
undefined
>({
mutationFn: ({ query, body }) =>
api.servers.updateServerPermission(query, body),
onSuccess: (_data, variables) => {
queryClient.invalidateQueries(queryKeys.users.detail(variables.userId));
},
});
return mutation;
};