mirror of
https://github.com/Frooodle/Stirling-PDF.git
synced 2025-08-20 13:47:46 +02:00
Remove param validation from standard tool operation
This commit is contained in:
parent
f9474718f4
commit
d0ddf37b9a
@ -38,12 +38,6 @@ export const useCompressOperation = () => {
|
|||||||
buildFormData,
|
buildFormData,
|
||||||
filePrefix: 'compressed_',
|
filePrefix: 'compressed_',
|
||||||
multiFileEndpoint: false, // Individual API calls per file
|
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.'))
|
getErrorMessage: createStandardErrorHandler(t('compress.error.failed', 'An error occurred while compressing the PDF.'))
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
@ -134,9 +134,6 @@ export const useConvertOperation = () => {
|
|||||||
buildFormData, // Not used with customProcessor but required
|
buildFormData, // Not used with customProcessor but required
|
||||||
filePrefix: 'converted_',
|
filePrefix: 'converted_',
|
||||||
customProcessor: customConvertProcessor, // Convert handles its own routing
|
customProcessor: customConvertProcessor, // Convert handles its own routing
|
||||||
validateParams: (params) => {
|
|
||||||
return { valid: true };
|
|
||||||
},
|
|
||||||
getErrorMessage: (error) => {
|
getErrorMessage: (error) => {
|
||||||
if (error.response?.data && typeof error.response.data === 'string') {
|
if (error.response?.data && typeof error.response.data === 'string') {
|
||||||
return error.response.data;
|
return error.response.data;
|
||||||
|
@ -103,10 +103,6 @@ export const useOCROperation = () => {
|
|||||||
filePrefix: 'ocr_',
|
filePrefix: 'ocr_',
|
||||||
multiFileEndpoint: false, // Process files individually
|
multiFileEndpoint: false, // Process files individually
|
||||||
responseHandler, // use shared flow
|
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) =>
|
getErrorMessage: (error) =>
|
||||||
error.message?.includes('OCR tools') && error.message?.includes('not installed')
|
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.'
|
? '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.'
|
||||||
|
@ -27,14 +27,6 @@ export const useSanitizeOperation = () => {
|
|||||||
buildFormData,
|
buildFormData,
|
||||||
filePrefix: t('sanitize.filenamePrefix', 'sanitized') + '_',
|
filePrefix: t('sanitize.filenamePrefix', 'sanitized') + '_',
|
||||||
multiFileEndpoint: false, // Individual API calls per file
|
multiFileEndpoint: false, // Individual API calls per file
|
||||||
validateParams: (params) => {
|
getErrorMessage: createStandardErrorHandler(t('sanitize.error.failed', 'An error occurred while sanitising the PDF.'))
|
||||||
// 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.'))
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
@ -35,20 +35,19 @@ export const useSanitizeParameters = () => {
|
|||||||
setParameters(defaultParameters);
|
setParameters(defaultParameters);
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
const validateParameters = useCallback(() => {
|
||||||
|
return Object.values(parameters).some(value => value === true);
|
||||||
|
}, [parameters]);
|
||||||
|
|
||||||
const getEndpointName = () => {
|
const getEndpointName = () => {
|
||||||
return 'sanitize-pdf'
|
return 'sanitize-pdf'
|
||||||
};
|
};
|
||||||
|
|
||||||
const validateParameters = useCallback(() => {
|
|
||||||
// At least one sanitization option must be selected
|
|
||||||
return Object.values(parameters).some(value => value === true);
|
|
||||||
}, [parameters]);
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
parameters,
|
parameters,
|
||||||
updateParameter,
|
updateParameter,
|
||||||
resetParameters,
|
resetParameters,
|
||||||
getEndpointName,
|
|
||||||
validateParameters,
|
validateParameters,
|
||||||
|
getEndpointName,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -9,11 +9,6 @@ import { extractErrorMessage } from '../../../utils/toolErrorHandler';
|
|||||||
import { createOperation } from '../../../utils/toolOperationTracker';
|
import { createOperation } from '../../../utils/toolOperationTracker';
|
||||||
import { ResponseHandler } from '../../../utils/toolResponseProcessor';
|
import { ResponseHandler } from '../../../utils/toolResponseProcessor';
|
||||||
|
|
||||||
export interface ValidationResult {
|
|
||||||
valid: boolean;
|
|
||||||
errors?: string[];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Re-export for backwards compatibility
|
// Re-export for backwards compatibility
|
||||||
export type { ProcessingProgress, ResponseHandler };
|
export type { ProcessingProgress, ResponseHandler };
|
||||||
|
|
||||||
@ -64,9 +59,6 @@ export interface ToolOperationConfig<TParams = void> {
|
|||||||
*/
|
*/
|
||||||
customProcessor?: (params: TParams, files: File[]) => Promise<File[]>;
|
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 */
|
/** Extract user-friendly error messages from API errors */
|
||||||
getErrorMessage?: (error: any) => string;
|
getErrorMessage?: (error: any) => string;
|
||||||
}
|
}
|
||||||
@ -129,14 +121,6 @@ export const useToolOperation = <TParams = void>(
|
|||||||
return;
|
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);
|
const validFiles = selectedFiles.filter(file => file.size > 0);
|
||||||
if (validFiles.length === 0) {
|
if (validFiles.length === 0) {
|
||||||
actions.setError(t('noValidFiles', 'No valid files to process'));
|
actions.setError(t('noValidFiles', 'No valid files to process'));
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
import { useCallback } from 'react';
|
|
||||||
import axios from 'axios';
|
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import { useToolOperation, ToolOperationConfig } from '../shared/useToolOperation';
|
import { useToolOperation } from '../shared/useToolOperation';
|
||||||
import { createStandardErrorHandler } from '../../../utils/toolErrorHandler';
|
import { createStandardErrorHandler } from '../../../utils/toolErrorHandler';
|
||||||
import { SplitParameters } from '../../../components/tools/split/SplitSettings';
|
import { SplitParameters } from '../../../components/tools/split/SplitSettings';
|
||||||
import { SPLIT_MODES } from '../../../constants/splitConstants';
|
import { SPLIT_MODES } from '../../../constants/splitConstants';
|
||||||
@ -66,17 +64,6 @@ export const useSplitOperation = () => {
|
|||||||
buildFormData: buildFormData, // Multi-file signature: (params, selectedFiles) => FormData
|
buildFormData: buildFormData, // Multi-file signature: (params, selectedFiles) => FormData
|
||||||
filePrefix: 'split_',
|
filePrefix: 'split_',
|
||||||
multiFileEndpoint: true, // Single API call with all files
|
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.'))
|
getErrorMessage: createStandardErrorHandler(t('split.error.failed', 'An error occurred while splitting the PDF.'))
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { useState } from 'react';
|
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';
|
import { SplitParameters } from '../../../components/tools/split/SplitSettings';
|
||||||
|
|
||||||
export interface SplitParametersHook {
|
export interface SplitParametersHook {
|
||||||
@ -63,4 +63,4 @@ export const useSplitParameters = (): SplitParametersHook => {
|
|||||||
validateParameters,
|
validateParameters,
|
||||||
getEndpointName,
|
getEndpointName,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user