From aa41cbe75dd907aae8347962ae439774ae77aca3 Mon Sep 17 00:00:00 2001 From: Connor Yoh Date: Mon, 1 Sep 2025 15:03:38 +0100 Subject: [PATCH] Result files are added to recents --- frontend/src/contexts/FileContext.tsx | 4 ++-- frontend/src/contexts/file/fileActions.ts | 18 +++++++++++++++--- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/frontend/src/contexts/FileContext.tsx b/frontend/src/contexts/FileContext.tsx index 0698310b4..227308c54 100644 --- a/frontend/src/contexts/FileContext.tsx +++ b/frontend/src/contexts/FileContext.tsx @@ -122,8 +122,8 @@ function FileContextInner({ // Helper functions for pinned files const consumeFilesWrapper = useCallback(async (inputFileIds: FileId[], outputFiles: File[]): Promise => { - return consumeFiles(inputFileIds, outputFiles, stateRef, filesRef, dispatch); - }, []); + return consumeFiles(inputFileIds, outputFiles, stateRef, filesRef, dispatch, indexedDB); + }, [indexedDB]); // Helper to find FileId from File object const findFileId = useCallback((file: File): FileId | undefined => { diff --git a/frontend/src/contexts/file/fileActions.ts b/frontend/src/contexts/file/fileActions.ts index 8d91f8855..bac7792d2 100644 --- a/frontend/src/contexts/file/fileActions.ts +++ b/frontend/src/contexts/file/fileActions.ts @@ -330,7 +330,8 @@ export async function consumeFiles( outputFiles: File[], stateRef: React.MutableRefObject, filesRef: React.MutableRefObject>, - dispatch: React.Dispatch + dispatch: React.Dispatch, + indexedDB?: { saveFile: (file: File, fileId: FileId, existingThumbnail?: string) => Promise } | null ): Promise { if (DEBUG) console.log(`📄 consumeFiles: Processing ${inputFileIds.length} input files, ${outputFiles.length} output files`); @@ -362,16 +363,27 @@ export async function consumeFiles( record.processedFile = createProcessedFile(pageCount, thumbnail); } - return record; + return { record, file, fileId, thumbnail }; }) ); + // Persist output files to IndexedDB if available + if (indexedDB) { + await Promise.all(outputFileRecords.map(async ({ file, fileId, thumbnail }) => { + try { + await indexedDB.saveFile(file, fileId, thumbnail); + } catch (error) { + console.error('Failed to persist output file to IndexedDB:', file.name, error); + } + })); + } + // Dispatch the consume action dispatch({ type: 'CONSUME_FILES', payload: { inputFileIds, - outputFileRecords + outputFileRecords: outputFileRecords.map(({ record }) => record) } });