From b8cf5fda7eaa7ee5ed7dbecf9e1cf6224c4cebe6 Mon Sep 17 00:00:00 2001 From: Reece Browne Date: Tue, 19 Aug 2025 22:32:29 +0100 Subject: [PATCH] feat: Add file ID lookup and integrate with file consumption in tool operations --- frontend/src/components/pageEditor/PageEditor.tsx | 4 ++-- frontend/src/contexts/file/fileHooks.ts | 11 +++++++++++ frontend/src/hooks/tools/shared/useToolOperation.ts | 9 +++++---- frontend/src/types/fileContext.ts | 3 --- 4 files changed, 18 insertions(+), 9 deletions(-) diff --git a/frontend/src/components/pageEditor/PageEditor.tsx b/frontend/src/components/pageEditor/PageEditor.tsx index ecc032e16..505294786 100644 --- a/frontend/src/components/pageEditor/PageEditor.tsx +++ b/frontend/src/components/pageEditor/PageEditor.tsx @@ -375,7 +375,7 @@ const PageEditor = ({ } ); - console.log(`📸 PageEditor: Thumbnail generation completed for ${pageNumbers.length} pages`); + // Removed verbose logging - only log errors } catch (error) { console.error('PageEditor: Thumbnail generation failed:', error); } @@ -399,7 +399,7 @@ const PageEditor = ({ } if (chunkPageNumbers.length > 0) { - console.log(`📸 PageEditor: Background generating chunk: pages ${start}-${end} (${chunkPageNumbers.length} needed)`); + // Background thumbnail generation in progress (removed verbose logging) await generateThumbnailBatch(file, fileId, chunkPageNumbers); // Small delay between chunks to keep UI responsive diff --git a/frontend/src/contexts/file/fileHooks.ts b/frontend/src/contexts/file/fileHooks.ts index cf04c1f09..fdf381b35 100644 --- a/frontend/src/contexts/file/fileHooks.ts +++ b/frontend/src/contexts/file/fileHooks.ts @@ -161,6 +161,17 @@ export function useFileContext() { markOperationApplied: (fileId: string, operationId: string) => {}, // TODO: Implement operation tracking markOperationFailed: (fileId: string, operationId: string, error: string) => {}, // TODO: Implement operation tracking + // File ID lookup + findFileId: (file: File) => { + return state.files.ids.find(id => { + const record = state.files.byId[id]; + return record && + record.name === file.name && + record.size === file.size && + record.lastModified === file.lastModified; + }); + }, + // Pinned files pinnedFiles: state.pinnedFiles, pinFile: actions.pinFile, diff --git a/frontend/src/hooks/tools/shared/useToolOperation.ts b/frontend/src/hooks/tools/shared/useToolOperation.ts index 2c78cb153..4e76e6e7d 100644 --- a/frontend/src/hooks/tools/shared/useToolOperation.ts +++ b/frontend/src/hooks/tools/shared/useToolOperation.ts @@ -104,7 +104,7 @@ export const useToolOperation = ( config: ToolOperationConfig ): ToolOperationHook => { const { t } = useTranslation(); - const { recordOperation, markOperationApplied, markOperationFailed, addFiles } = useFileContext(); + const { recordOperation, markOperationApplied, markOperationFailed, addFiles, consumeFiles, findFileId } = useFileContext(); // Composed hooks const { state, actions } = useToolState(); @@ -198,8 +198,9 @@ export const useToolOperation = ( actions.setThumbnails(thumbnails); actions.setDownloadInfo(downloadInfo.url, downloadInfo.filename); - // Add processed files to the file context - await addFiles(processedFiles); + // Replace input files with processed files (consumeFiles handles pinning) + const inputFileIds = validFiles.map(file => findFileId(file)).filter(Boolean) as string[]; + await consumeFiles(inputFileIds, processedFiles); markOperationApplied(fileId, operationId); } @@ -213,7 +214,7 @@ export const useToolOperation = ( actions.setLoading(false); actions.setProgress(null); } - }, [t, config, actions, recordOperation, markOperationApplied, markOperationFailed, addFiles, processFiles, generateThumbnails, createDownloadInfo, cleanupBlobUrls, extractZipFiles, extractAllZipFiles]); + }, [t, config, actions, recordOperation, markOperationApplied, markOperationFailed, addFiles, consumeFiles, findFileId, processFiles, generateThumbnails, createDownloadInfo, cleanupBlobUrls, extractZipFiles, extractAllZipFiles]); const cancelOperation = useCallback(() => { cancelApiCalls(); diff --git a/frontend/src/types/fileContext.ts b/frontend/src/types/fileContext.ts index 918d5ad17..92b1f4613 100644 --- a/frontend/src/types/fileContext.ts +++ b/frontend/src/types/fileContext.ts @@ -248,9 +248,6 @@ export interface FileContextActions { trackPdfDocument: (key: string, pdfDoc: any) => void; scheduleCleanup: (fileId: string, delay?: number) => void; cleanupFile: (fileId: string) => void; - - // Persistence operations - loadFromPersistence: () => Promise; } // File selectors (separate from actions to avoid re-renders)