mirror of
https://github.com/Stirling-Tools/Stirling-PDF.git
synced 2025-09-25 04:56:13 +00:00

# Description of Changes Redesigns `ToolOperationConfig` so that the types of the functions are always known depending on whether the tool runs on single files, multiple files, or uses custom behaviour
55 lines
2.3 KiB
TypeScript
55 lines
2.3 KiB
TypeScript
import { useTranslation } from 'react-i18next';
|
|
import { ToolType, useToolOperation } from '../shared/useToolOperation';
|
|
import { createStandardErrorHandler } from '../../../utils/toolErrorHandler';
|
|
import { AddWatermarkParameters, defaultParameters } from './useAddWatermarkParameters';
|
|
|
|
// Static function that can be used by both the hook and automation executor
|
|
export const buildAddWatermarkFormData = (parameters: AddWatermarkParameters, file: File): FormData => {
|
|
const formData = new FormData();
|
|
formData.append("fileInput", file);
|
|
|
|
// Required: watermarkType as string
|
|
formData.append("watermarkType", parameters.watermarkType || "text");
|
|
|
|
// Add watermark content based on type
|
|
if (parameters.watermarkType === 'text') {
|
|
formData.append("watermarkText", parameters.watermarkText);
|
|
} else if (parameters.watermarkType === 'image' && parameters.watermarkImage) {
|
|
formData.append("watermarkImage", parameters.watermarkImage);
|
|
}
|
|
|
|
// Required parameters with correct formatting
|
|
formData.append("fontSize", parameters.fontSize.toString());
|
|
formData.append("rotation", parameters.rotation.toString());
|
|
formData.append("opacity", (parameters.opacity / 100).toString()); // Convert percentage to decimal
|
|
formData.append("widthSpacer", parameters.widthSpacer.toString());
|
|
formData.append("heightSpacer", parameters.heightSpacer.toString());
|
|
|
|
// Backend-expected parameters from user input
|
|
formData.append("alphabet", parameters.alphabet);
|
|
formData.append("customColor", parameters.customColor);
|
|
formData.append("convertPDFToImage", parameters.convertPDFToImage.toString());
|
|
|
|
return formData;
|
|
};
|
|
|
|
// Static configuration object
|
|
export const addWatermarkOperationConfig = {
|
|
toolType: ToolType.singleFile,
|
|
buildFormData: buildAddWatermarkFormData,
|
|
operationType: 'watermark',
|
|
endpoint: '/api/v1/security/add-watermark',
|
|
filePrefix: 'watermarked_', // Will be overridden in hook with translation
|
|
defaultParameters,
|
|
} as const;
|
|
|
|
export const useAddWatermarkOperation = () => {
|
|
const { t } = useTranslation();
|
|
|
|
return useToolOperation<AddWatermarkParameters>({
|
|
...addWatermarkOperationConfig,
|
|
filePrefix: t('watermark.filenamePrefix', 'watermarked') + '_',
|
|
getErrorMessage: createStandardErrorHandler(t('watermark.error.failed', 'An error occurred while adding watermark to the PDF.'))
|
|
});
|
|
};
|