| import { useCallback } from 'react'; | |
| import useFileHandling from './useFileHandling'; | |
| import useSharePointDownload from './useSharePointDownload'; | |
| import type { SharePointFile } from '~/data-provider/Files/sharepoint'; | |
| interface UseSharePointFileHandlingProps { | |
| fileSetter?: any; | |
| toolResource?: string; | |
| fileFilter?: (file: File) => boolean; | |
| additionalMetadata?: Record<string, string | undefined>; | |
| } | |
| interface UseSharePointFileHandlingReturn { | |
| handleSharePointFiles: (files: SharePointFile[]) => Promise<void>; | |
| isProcessing: boolean; | |
| downloadProgress: any; | |
| error: string | null; | |
| } | |
| export default function useSharePointFileHandling( | |
| props?: UseSharePointFileHandlingProps, | |
| ): UseSharePointFileHandlingReturn { | |
| const { handleFiles } = useFileHandling(props); | |
| const { downloadSharePointFiles, isDownloading, downloadProgress, error } = useSharePointDownload( | |
| { | |
| onFilesDownloaded: async (downloadedFiles: File[]) => { | |
| const fileArray = Array.from(downloadedFiles); | |
| await handleFiles(fileArray, props?.toolResource); | |
| }, | |
| onError: (error) => { | |
| console.error('SharePoint download failed:', error); | |
| }, | |
| }, | |
| ); | |
| const handleSharePointFiles = useCallback( | |
| async (sharePointFiles: SharePointFile[]) => { | |
| try { | |
| await downloadSharePointFiles(sharePointFiles); | |
| } catch (error) { | |
| console.error('SharePoint file handling error:', error); | |
| throw error; | |
| } | |
| }, | |
| [downloadSharePointFiles], | |
| ); | |
| return { | |
| handleSharePointFiles, | |
| isProcessing: isDownloading, | |
| downloadProgress, | |
| error, | |
| }; | |
| } | |