make sure processing files stay in table

This commit is contained in:
Cole Goldsmith 2025-11-20 14:08:16 -06:00
parent 5a2e1b9f6f
commit a3ce3d5c08
3 changed files with 39 additions and 28 deletions

View file

@ -97,20 +97,14 @@ function SearchPage() {
taskFilesAsFiles.map((file) => [file.filename, file]), taskFilesAsFiles.map((file) => [file.filename, file]),
); );
// Override backend files with task file status if they exist // Override backend files with task file status if they exist
const backendFiles = (searchData as File[]) const backendFiles = (searchData as File[]).map((file) => {
.map((file) => { const taskFile = taskFileMap.get(file.filename);
const taskFile = taskFileMap.get(file.filename); if (taskFile) {
if (taskFile) { // Override backend file with task file data (includes status)
// Override backend file with task file data (includes status) return { ...file, ...taskFile };
return { ...file, ...taskFile }; }
} return file;
return file; });
})
.filter((file) => {
// Only filter out files that are currently processing AND in taskFiles
const taskFile = taskFileMap.get(file.filename);
return !taskFile || taskFile.status !== "processing";
});
const filteredTaskFiles = taskFilesAsFiles.filter((taskFile) => { const filteredTaskFiles = taskFilesAsFiles.filter((taskFile) => {
return ( return (

View file

@ -256,15 +256,18 @@ export function KnowledgeDropdown() {
".rtf", ".rtf",
".odt", ".odt",
]; ];
const filteredFiles = fileList.filter((file) => { const filteredFiles = fileList.filter((file) => {
const ext = file.name.substring(file.name.lastIndexOf(".")).toLowerCase(); const ext = file.name
.substring(file.name.lastIndexOf("."))
.toLowerCase();
return supportedExtensions.includes(ext); return supportedExtensions.includes(ext);
}); });
if (filteredFiles.length === 0) { if (filteredFiles.length === 0) {
toast.error("No supported files found", { toast.error("No supported files found", {
description: "Please select a folder containing PDF, DOC, DOCX, TXT, MD, RTF, or ODT files.", description:
"Please select a folder containing PDF, DOC, DOCX, TXT, MD, RTF, or ODT files.",
}); });
return; return;
} }
@ -274,21 +277,28 @@ export function KnowledgeDropdown() {
for (const originalFile of filteredFiles) { for (const originalFile of filteredFiles) {
try { try {
// Extract just the filename without the folder path // Extract just the filename without the folder path
const fileName = originalFile.name.split('/').pop() || originalFile.name; const fileName =
console.log(`[Folder Upload] Processing file: ${originalFile.name} -> ${fileName}`); originalFile.name.split("/").pop() || originalFile.name;
console.log(
`[Folder Upload] Processing file: ${originalFile.name} -> ${fileName}`,
);
// Create a new File object with just the basename (no folder path) // Create a new File object with just the basename (no folder path)
// This is necessary because the webkitRelativePath includes the folder name // This is necessary because the webkitRelativePath includes the folder name
const file = new File([originalFile], fileName, { const file = new File([originalFile], fileName, {
type: originalFile.type, type: originalFile.type,
lastModified: originalFile.lastModified lastModified: originalFile.lastModified,
}); });
console.log(`[Folder Upload] Created new File object:`, { name: file.name, type: file.type, size: file.size }); console.log(`[Folder Upload] Created new File object:`, {
name: file.name,
type: file.type,
size: file.size,
});
// Check for duplicates using the clean filename // Check for duplicates using the clean filename
const checkData = await duplicateCheck(file); const checkData = await duplicateCheck(file);
console.log(`[Folder Upload] Duplicate check result:`, checkData); console.log(`[Folder Upload] Duplicate check result:`, checkData);
if (!checkData.exists) { if (!checkData.exists) {
console.log(`[Folder Upload] Uploading file: ${fileName}`); console.log(`[Folder Upload] Uploading file: ${fileName}`);
await uploadFileUtil(file, false); await uploadFileUtil(file, false);
@ -297,7 +307,10 @@ export function KnowledgeDropdown() {
console.log(`[Folder Upload] Skipping duplicate: ${fileName}`); console.log(`[Folder Upload] Skipping duplicate: ${fileName}`);
} }
} catch (error) { } catch (error) {
console.error(`[Folder Upload] Failed to upload ${originalFile.name}:`, error); console.error(
`[Folder Upload] Failed to upload ${originalFile.name}:`,
error,
);
} }
} }
@ -516,7 +529,7 @@ export function KnowledgeDropdown() {
className="hidden" className="hidden"
accept=".pdf,.doc,.docx,.txt,.md,.rtf,.odt" accept=".pdf,.doc,.docx,.txt,.md,.rtf,.odt"
/> />
<input <input
ref={folderInputRef} ref={folderInputRef}
type="file" type="file"

View file

@ -299,9 +299,13 @@ export function TaskProvider({ children }: { children: React.ReactNode }) {
}); });
} }
setTimeout(() => { setTimeout(() => {
// Only remove files from THIS specific task that completed
setFiles((prevFiles) => setFiles((prevFiles) =>
prevFiles.filter( prevFiles.filter(
(file) => file.status === "active" || file.status === "failed", (file) =>
file.task_id !== currentTask.task_id ||
file.status === "active" ||
file.status === "failed",
), ),
); );
refetchSearch(); refetchSearch();