Spaces:
Sleeping
Sleeping
| 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 | |
| }); | |
| } | |
| }); | |
| }; |