pmtool / src /hooks /asset-management /useBulkImport.ts
devarshia5's picture
Upload 487 files
d97b8f9 verified
Raw
History Blame Contribute Delete
1.52 kB
import { useMutation, useQueryClient } from '@tanstack/react-query';
import { AssetCreateRequest, BulkImportResponse } from '@/types/asset-management';
import { assetApi } from '@/services/assetApi';
import { toast } from '@/lib/custom-toast';
export const useBulkImportAssets = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: async (assets: AssetCreateRequest[]): Promise<BulkImportResponse> => {
return await assetApi.bulkImport(assets);
},
onSuccess: (result: BulkImportResponse) => {
// Invalidate and refetch assets data
queryClient.invalidateQueries({ queryKey: ['assets'] });
if (result.success) {
if (result.results.failed === 0) {
toast.success(`Successfully imported all ${result.results.successful} assets`);
} else {
toast.success(
`Import completed: ${result.results.successful} successful, ${result.results.failed} failed`,
{
description: 'Check the import results for details on failed items.'
}
);
}
} else {
toast.error(`Import failed: ${result.results.failed} assets could not be imported`, {
description: result.message
});
}
},
onError: (error: any) => {
const errorMessage = error?.message || 'Failed to import assets';
toast.error('Bulk import failed', {
description: errorMessage
});
}
});
};