From 9cee47071eae72c94f080f7d833274bf13503bde Mon Sep 17 00:00:00 2001 From: phact Date: Mon, 24 Nov 2025 09:58:14 -0500 Subject: [PATCH] validate and filter in one place + fix copy --- frontend/components/knowledge-dropdown.tsx | 58 +++++++++++----------- uv.lock | 4 +- 2 files changed, 32 insertions(+), 30 deletions(-) diff --git a/frontend/components/knowledge-dropdown.tsx b/frontend/components/knowledge-dropdown.tsx index 27725b0c..d0100790 100644 --- a/frontend/components/knowledge-dropdown.tsx +++ b/frontend/components/knowledge-dropdown.tsx @@ -43,6 +43,33 @@ import { } from "@/lib/upload-utils"; import { cn } from "@/lib/utils"; +// Supported file extensions - single source of truth +const SUPPORTED_EXTENSIONS = [ + ".pdf", + ".doc", + ".docx", + ".pptx", + ".ppt", + ".xlsx", + ".xls", + ".csv", + ".txt", + ".md", + ".html", + ".htm", + ".rtf", + ".odt", + ".asciidoc", + ".adoc", + ".png", + ".jpg", + ".jpeg", + ".gif", + ".bmp", + ".tiff", + ".webp", +]; + export function KnowledgeDropdown() { const { addTask } = useTask(); const { refetch: refetchTasks } = useGetTasksQuery(); @@ -247,43 +274,18 @@ export function KnowledgeDropdown() { try { const fileList = Array.from(files); - const supportedExtensions = [ - ".pdf", - ".doc", - ".docx", - ".pptx", - ".ppt", - ".xlsx", - ".xls", - ".csv", - ".txt", - ".md", - ".html", - ".htm", - ".rtf", - ".odt", - ".asciidoc", - ".adoc", - ".png", - ".jpg", - ".jpeg", - ".gif", - ".bmp", - ".tiff", - ".webp", - ]; const filteredFiles = fileList.filter((file) => { const ext = file.name .substring(file.name.lastIndexOf(".")) .toLowerCase(); - return supportedExtensions.includes(ext); + return SUPPORTED_EXTENSIONS.includes(ext); }); if (filteredFiles.length === 0) { toast.error("No supported files found", { description: - "Please select a folder containing PDF, DOC, DOCX, TXT, MD, RTF, or ODT files.", + "Please select a folder containing supported document files (PDF, DOCX, PPTX, XLSX, CSV, HTML, images, etc.).", }); return; } @@ -543,7 +545,7 @@ export function KnowledgeDropdown() { type="file" onChange={handleFileChange} className="hidden" - accept=".pdf,.doc,.docx,.txt,.md,.rtf,.odt" + accept={SUPPORTED_EXTENSIONS.join(",")} />