2025-08-04 15:01:36 +01:00
|
|
|
import { useCallback } from 'react';
|
2025-08-21 17:30:26 +01:00
|
|
|
import { useFileState, useFileActions } from '../contexts/FileContext';
|
|
|
|
import { FileMetadata } from '../types/file';
|
2025-08-28 10:56:07 +01:00
|
|
|
import { FileId } from '../types/file';
|
2025-08-04 15:01:36 +01:00
|
|
|
|
|
|
|
export const useFileHandler = () => {
|
2025-08-21 17:30:26 +01:00
|
|
|
const { state } = useFileState(); // Still needed for addStoredFiles
|
|
|
|
const { actions } = useFileActions();
|
2025-08-04 15:01:36 +01:00
|
|
|
|
|
|
|
const addToActiveFiles = useCallback(async (file: File) => {
|
2025-08-21 17:30:26 +01:00
|
|
|
// Let FileContext handle deduplication with quickKey logic
|
2025-08-29 16:39:19 +01:00
|
|
|
await actions.addFiles([file], { selectFiles: true });
|
2025-08-21 17:30:26 +01:00
|
|
|
}, [actions.addFiles]);
|
2025-08-04 15:01:36 +01:00
|
|
|
|
|
|
|
const addMultipleFiles = useCallback(async (files: File[]) => {
|
2025-08-21 17:30:26 +01:00
|
|
|
// Let FileContext handle deduplication with quickKey logic
|
2025-08-29 16:39:19 +01:00
|
|
|
await actions.addFiles(files, { selectFiles: true });
|
2025-08-21 17:30:26 +01:00
|
|
|
}, [actions.addFiles]);
|
|
|
|
|
|
|
|
// Add stored files preserving their original IDs to prevent session duplicates
|
2025-08-28 10:56:07 +01:00
|
|
|
const addStoredFiles = useCallback(async (filesWithMetadata: Array<{ file: File; originalId: FileId; metadata: FileMetadata }>) => {
|
2025-08-21 17:30:26 +01:00
|
|
|
// Filter out files that already exist with the same ID (exact match)
|
|
|
|
const newFiles = filesWithMetadata.filter(({ originalId }) => {
|
|
|
|
return state.files.byId[originalId] === undefined;
|
|
|
|
});
|
2025-08-28 10:56:07 +01:00
|
|
|
|
2025-08-04 15:01:36 +01:00
|
|
|
if (newFiles.length > 0) {
|
2025-08-29 16:39:19 +01:00
|
|
|
await actions.addStoredFiles(newFiles, { selectFiles: true });
|
2025-08-04 15:01:36 +01:00
|
|
|
}
|
2025-08-28 10:56:07 +01:00
|
|
|
|
2025-08-21 17:30:26 +01:00
|
|
|
console.log(`📁 Added ${newFiles.length} stored files (${filesWithMetadata.length - newFiles.length} skipped as duplicates)`);
|
|
|
|
}, [state.files.byId, actions.addStoredFiles]);
|
2025-08-04 15:01:36 +01:00
|
|
|
|
|
|
|
return {
|
|
|
|
addToActiveFiles,
|
|
|
|
addMultipleFiles,
|
2025-08-21 17:30:26 +01:00
|
|
|
addStoredFiles,
|
2025-08-04 15:01:36 +01:00
|
|
|
};
|
2025-08-28 10:56:07 +01:00
|
|
|
};
|