Enforce at least two files selected for merge

This commit is contained in:
James Brunton 2025-08-19 17:03:40 +01:00
parent 47c9110139
commit e69e489af9
4 changed files with 12 additions and 4 deletions

View File

@ -5,17 +5,19 @@ import { useTranslation } from "react-i18next";
export interface FileStatusIndicatorProps {
selectedFiles?: File[];
placeholder?: string;
minFiles?: number;
}
const FileStatusIndicator = ({
selectedFiles = [],
placeholder,
minFiles = 1,
}: FileStatusIndicatorProps) => {
const { t } = useTranslation();
const { t } = useTranslation();
const defaultPlaceholder = placeholder || t("files.placeholder", "Select a PDF file in the main view to get started");
// Only show content when no files are selected
if (selectedFiles.length === 0) {
if (selectedFiles.length < minFiles) {
return (
<Text size="sm" c="dimmed">
{defaultPlaceholder}

View File

@ -7,6 +7,7 @@ export interface FilesToolStepProps {
isCollapsed?: boolean;
onCollapsedClick?: () => void;
placeholder?: string;
minFiles?: number;
}
export function createFilesToolStep(
@ -23,6 +24,7 @@ export function createFilesToolStep(
<FileStatusIndicator
selectedFiles={props.selectedFiles}
placeholder={props.placeholder || t("files.placeholder", "Select a PDF file in the main view to get started")}
minFiles={props.minFiles}
/>
));
}

View File

@ -8,6 +8,7 @@ export interface FilesStepConfig {
selectedFiles: File[];
isCollapsed?: boolean;
placeholder?: string;
minFiles?: number;
onCollapsedClick?: () => void;
isVisible?: boolean;
}
@ -68,6 +69,7 @@ export function createToolFlow(config: ToolFlowConfig) {
selectedFiles: config.files.selectedFiles,
isCollapsed: config.files.isCollapsed,
placeholder: config.files.placeholder,
minFiles: config.files.minFiles,
onCollapsedClick: config.files.onCollapsedClick
})}

View File

@ -75,7 +75,8 @@ const Merge = ({ onPreviewFile, onComplete, onError }: BaseToolProps) => {
}) as any /* FIX ME: Parameter type is wrong on setSelectedFiles */);
}, []);
const hasFiles = selectedFiles.length > 1; // Merge requires at least 2 files
const minFiles = 2; // Merging one file doesn't make sense
const hasFiles = selectedFiles.length >= minFiles;
const hasResults = mergeOperation.files.length > 0 || mergeOperation.downloadUrl !== null;
const settingsCollapsed = !hasFiles || hasResults;
@ -84,6 +85,7 @@ const Merge = ({ onPreviewFile, onComplete, onError }: BaseToolProps) => {
selectedFiles,
isCollapsed: hasFiles && !hasResults,
placeholder: "Select multiple PDF files to merge",
minFiles: minFiles,
},
steps: [
{