Remove param validation from standard tool operation

This commit is contained in:
James 2025-08-12 14:09:04 +01:00
parent f9474718f4
commit d0ddf37b9a
8 changed files with 9 additions and 60 deletions

View File

@ -38,12 +38,6 @@ export const useCompressOperation = () => {
buildFormData,
filePrefix: 'compressed_',
multiFileEndpoint: false, // Individual API calls per file
validateParams: (params) => {
if (params.compressionMethod === 'filesize' && !params.fileSizeValue) {
return { valid: false, errors: [t('compress.validation.fileSizeRequired', 'File size value is required when using filesize method')] };
}
return { valid: true };
},
getErrorMessage: createStandardErrorHandler(t('compress.error.failed', 'An error occurred while compressing the PDF.'))
});
};

View File

@ -134,9 +134,6 @@ export const useConvertOperation = () => {
buildFormData, // Not used with customProcessor but required
filePrefix: 'converted_',
customProcessor: customConvertProcessor, // Convert handles its own routing
validateParams: (params) => {
return { valid: true };
},
getErrorMessage: (error) => {
if (error.response?.data && typeof error.response.data === 'string') {
return error.response.data;

View File

@ -103,10 +103,6 @@ export const useOCROperation = () => {
filePrefix: 'ocr_',
multiFileEndpoint: false, // Process files individually
responseHandler, // use shared flow
validateParams: (params) =>
params.languages.length === 0
? { valid: false, errors: [t('ocr.validation.languageRequired', 'Please select at least one language for OCR processing.')] }
: { valid: true },
getErrorMessage: (error) =>
error.message?.includes('OCR tools') && error.message?.includes('not installed')
? 'OCR tools (OCRmyPDF or Tesseract) are not installed on the server. Use the standard or fat Docker image instead of ultra-lite, or install OCR tools manually.'

View File

@ -27,14 +27,6 @@ export const useSanitizeOperation = () => {
buildFormData,
filePrefix: t('sanitize.filenamePrefix', 'sanitized') + '_',
multiFileEndpoint: false, // Individual API calls per file
validateParams: (params) => {
// At least one sanitization option must be selected
const hasAnyOption = Object.values(params).some(value => value === true);
if (!hasAnyOption) {
return { valid: false, errors: [t('sanitize.validation.atLeastOne', 'At least one sanitization option must be selected')] };
}
return { valid: true };
},
getErrorMessage: createStandardErrorHandler(t('sanitize.error.failed', 'An error occurred while sanitizing the PDF.'))
getErrorMessage: createStandardErrorHandler(t('sanitize.error.failed', 'An error occurred while sanitising the PDF.'))
});
};

View File

@ -35,20 +35,19 @@ export const useSanitizeParameters = () => {
setParameters(defaultParameters);
}, []);
const validateParameters = useCallback(() => {
return Object.values(parameters).some(value => value === true);
}, [parameters]);
const getEndpointName = () => {
return 'sanitize-pdf'
};
const validateParameters = useCallback(() => {
// At least one sanitization option must be selected
return Object.values(parameters).some(value => value === true);
}, [parameters]);
return {
parameters,
updateParameter,
resetParameters,
getEndpointName,
validateParameters,
getEndpointName,
};
};

View File

@ -9,11 +9,6 @@ import { extractErrorMessage } from '../../../utils/toolErrorHandler';
import { createOperation } from '../../../utils/toolOperationTracker';
import { ResponseHandler } from '../../../utils/toolResponseProcessor';
export interface ValidationResult {
valid: boolean;
errors?: string[];
}
// Re-export for backwards compatibility
export type { ProcessingProgress, ResponseHandler };
@ -64,9 +59,6 @@ export interface ToolOperationConfig<TParams = void> {
*/
customProcessor?: (params: TParams, files: File[]) => Promise<File[]>;
/** Validate parameters before execution. Return validation errors if invalid. */
validateParams?: (params: TParams) => ValidationResult;
/** Extract user-friendly error messages from API errors */
getErrorMessage?: (error: any) => string;
}
@ -129,14 +121,6 @@ export const useToolOperation = <TParams = void>(
return;
}
if (config.validateParams) {
const validation = config.validateParams(params);
if (!validation.valid) {
actions.setError(validation.errors?.join(', ') || 'Invalid parameters');
return;
}
}
const validFiles = selectedFiles.filter(file => file.size > 0);
if (validFiles.length === 0) {
actions.setError(t('noValidFiles', 'No valid files to process'));

View File

@ -1,7 +1,5 @@
import { useCallback } from 'react';
import axios from 'axios';
import { useTranslation } from 'react-i18next';
import { useToolOperation, ToolOperationConfig } from '../shared/useToolOperation';
import { useToolOperation } from '../shared/useToolOperation';
import { createStandardErrorHandler } from '../../../utils/toolErrorHandler';
import { SplitParameters } from '../../../components/tools/split/SplitSettings';
import { SPLIT_MODES } from '../../../constants/splitConstants';
@ -66,17 +64,6 @@ export const useSplitOperation = () => {
buildFormData: buildFormData, // Multi-file signature: (params, selectedFiles) => FormData
filePrefix: 'split_',
multiFileEndpoint: true, // Single API call with all files
validateParams: (params) => {
if (!params.mode) {
return { valid: false, errors: [t('split.validation.modeRequired', 'Split mode is required')] };
}
if (params.mode === SPLIT_MODES.BY_PAGES && !params.pages) {
return { valid: false, errors: [t('split.validation.pagesRequired', 'Page numbers are required for split by pages')] };
}
return { valid: true };
},
getErrorMessage: createStandardErrorHandler(t('split.error.failed', 'An error occurred while splitting the PDF.'))
});
};

View File

@ -1,5 +1,5 @@
import { useState } from 'react';
import { SPLIT_MODES, SPLIT_TYPES, ENDPOINTS, type SplitMode, type SplitType } from '../../../constants/splitConstants';
import { SPLIT_MODES, SPLIT_TYPES, ENDPOINTS, type SplitMode } from '../../../constants/splitConstants';
import { SplitParameters } from '../../../components/tools/split/SplitSettings';
export interface SplitParametersHook {
@ -63,4 +63,4 @@ export const useSplitParameters = (): SplitParametersHook => {
validateParameters,
getEndpointName,
};
};
};