feat: hook up the invice customize api

This commit is contained in:
Ahmed Bouhuolia
2024-09-12 14:16:07 +02:00
parent a7df23cebc
commit 632c4629de
21 changed files with 391 additions and 169 deletions

View File

@@ -6,8 +6,12 @@ import {
UseQueryOptions,
UseMutationResult,
UseQueryResult,
useQueryClient,
} from 'react-query';
import useApiRequest from '../useRequest';
import { transformToCamelCase, transfromToSnakeCase } from '@/utils';
const PdfTemplatesQueryKey = 'PdfTemplate';
export interface CreatePdfTemplateValues {
templateName: string;
@@ -18,7 +22,6 @@ export interface CreatePdfTemplateValues {
export interface CreatePdfTemplateResponse {}
export interface EditPdfTemplateValues {
templateId: string | number;
templateName: string;
attributes: Record<string, any>;
}
@@ -33,7 +36,14 @@ export interface DeletePdfTemplateResponse {}
export interface GetPdfTemplateValues {}
export interface GetPdfTemplateResponse {}
export interface GetPdfTemplateResponse {
templateName: string;
attributes: Record<string, any>;
predefined: boolean;
default: boolean;
createdAt: string;
updatedAt: string | null;
}
export interface GetPdfTemplatesValues {}
@@ -52,10 +62,18 @@ export const useCreatePdfTemplate = (
CreatePdfTemplateValues
> => {
const apiRequest = useApiRequest();
const queryClient = useQueryClient();
return useMutation<CreatePdfTemplateResponse, Error, CreatePdfTemplateValues>(
(values) =>
apiRequest.post('/pdf-templates', values).then((res) => res.data),
options,
apiRequest
.post('/pdf-templates', transfromToSnakeCase(values))
.then((res) => res.data),
{
onSuccess: () => {
queryClient.invalidateQueries([PdfTemplatesQueryKey]);
},
...options,
},
);
};
@@ -71,6 +89,7 @@ export const useEditPdfTemplate = (
Error,
{ templateId: number; values: EditPdfTemplateValues }
> => {
const queryClient = useQueryClient();
const apiRequest = useApiRequest();
return useMutation<
EditPdfTemplateResponse,
@@ -79,9 +98,14 @@ export const useEditPdfTemplate = (
>(
({ templateId, values }) =>
apiRequest
.put(`/pdf-templates/${templateId}`, values)
.put(`/pdf-templates/${templateId}`, transfromToSnakeCase(values))
.then((res) => res.data),
options,
{
onSuccess: () => {
queryClient.invalidateQueries([PdfTemplatesQueryKey]);
},
...options,
},
);
};
@@ -98,10 +122,16 @@ export const useDeletePdfTemplate = (
{ templateId: number }
> => {
const apiRequest = useApiRequest();
const queryClient = useQueryClient();
return useMutation<DeletePdfTemplateResponse, Error, { templateId: number }>(
({ templateId }) =>
apiRequest.delete(`/pdf-templates/${templateId}`).then((res) => res.data),
options,
{
onSuccess: () => {
queryClient.invalidateQueries([PdfTemplatesQueryKey]);
},
...options,
},
);
};
@@ -112,9 +142,11 @@ export const useGetPdfTemplate = (
): UseQueryResult<GetPdfTemplateResponse, Error> => {
const apiRequest = useApiRequest();
return useQuery<GetPdfTemplateResponse, Error>(
['pdfTemplate', templateId],
[PdfTemplatesQueryKey, templateId],
() =>
apiRequest.get(`/pdf-templates/${templateId}`).then((res) => res.data),
apiRequest
.get(`/pdf-templates/${templateId}`)
.then((res) => transformToCamelCase(res.data)),
options,
);
};
@@ -125,7 +157,7 @@ export const useGetPdfTemplates = (
): UseQueryResult<GetPdfTemplatesResponse, Error> => {
const apiRequest = useApiRequest();
return useQuery<GetPdfTemplatesResponse, Error>(
'pdfTemplates',
PdfTemplatesQueryKey,
() => apiRequest.get('/pdf-templates').then((res) => res.data),
options,
);