feat(documents): implement document upload functionality for companies
- Added DocumentItem component to display uploaded documents in CompanyDetailsPage. - Introduced useUploadCompanyDocuments hook for handling document uploads. - Updated CreateCompany form to include document upload capabilities and validation for file types and sizes. - Enhanced API services to support batch document uploads and retrieval of document information. - Improved response handling in the file service for better error management and user feedback.
This commit is contained in:
@@ -16,3 +16,4 @@ export * from "./useUsersQueries";
|
||||
export * from "./useAdminListQuery";
|
||||
export * from "./useSelectSearchQuery";
|
||||
export * from "./useDashboardQueries";
|
||||
export * from "./useFilesQueries";
|
||||
|
||||
@@ -64,6 +64,24 @@ export const useCompanyDetails = (id: string) => {
|
||||
queryFn: () => companiesService.companyDetails(id),
|
||||
});
|
||||
};
|
||||
export const useUploadCompanyDocuments = (id: string) => {
|
||||
const queryClient = useQueryClient();
|
||||
const mutationKey = useMemo(
|
||||
() => [API_ENDPOINTS.COMPANIES.DOCUMENTS(id), "upload-documents"],
|
||||
[id],
|
||||
);
|
||||
return useMutation({
|
||||
mutationKey,
|
||||
mutationFn: (files: File[]) =>
|
||||
companiesService.uploadDocuments({ id, files }),
|
||||
onSuccess: () => {
|
||||
queryClient.invalidateQueries({
|
||||
queryKey: [API_ENDPOINTS.COMPANIES.READ_ALL, id, "details"],
|
||||
});
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
export const useDeleteCompanyQuery = (successCallback?: () => void) => {
|
||||
const queryClient = useQueryClient();
|
||||
const mutationKey = useMemo(
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
import { API_ENDPOINTS, fileService } from "@/lib/api";
|
||||
import { useQuery } from "@tanstack/react-query";
|
||||
import { useMemo } from "react";
|
||||
|
||||
/** Fetches (and caches) metadata for a single stored file. */
|
||||
export const useFileInfo = (fileId: string, options?: { enabled?: boolean }) => {
|
||||
const queryKey = useMemo(() => [API_ENDPOINTS.FILES.INFO(fileId)], [fileId]);
|
||||
return useQuery({
|
||||
queryKey,
|
||||
queryFn: () => fileService.getFileInfo(fileId),
|
||||
enabled: (options?.enabled ?? true) && Boolean(fileId),
|
||||
staleTime: 5 * 60 * 1000,
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user