Fix types of onParameterChange methods (#4415)

# Description of Changes
Fix types of onParameterChange methods
This commit is contained in:
James Brunton 2025-09-08 09:55:30 +01:00 committed by GitHub
parent 11d23a2d43
commit 316be5eac5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
14 changed files with 61 additions and 61 deletions

View File

@ -4,7 +4,7 @@ import { AddPasswordParameters } from "../../../hooks/tools/addPassword/useAddPa
interface AddPasswordSettingsProps { interface AddPasswordSettingsProps {
parameters: AddPasswordParameters; parameters: AddPasswordParameters;
onParameterChange: (key: keyof AddPasswordParameters, value: any) => void; onParameterChange: <K extends keyof AddPasswordParameters>(key: K, value: AddPasswordParameters[K]) => void;
disabled?: boolean; disabled?: boolean;
} }

View File

@ -4,7 +4,7 @@ import { ChangePermissionsParameters } from "../../../hooks/tools/changePermissi
interface ChangePermissionsSettingsProps { interface ChangePermissionsSettingsProps {
parameters: ChangePermissionsParameters; parameters: ChangePermissionsParameters;
onParameterChange: (key: keyof ChangePermissionsParameters, value: boolean) => void; onParameterChange: <K extends keyof ChangePermissionsParameters>(key: K, value: ChangePermissionsParameters[K]) => void;
disabled?: boolean; disabled?: boolean;
} }

View File

@ -5,7 +5,7 @@ import { CompressParameters } from "../../../hooks/tools/compress/useCompressPar
interface CompressSettingsProps { interface CompressSettingsProps {
parameters: CompressParameters; parameters: CompressParameters;
onParameterChange: (key: keyof CompressParameters, value: any) => void; onParameterChange: <K extends keyof CompressParameters>(key: K, value: CompressParameters[K]) => void;
disabled?: boolean; disabled?: boolean;
} }

View File

@ -5,40 +5,40 @@ import { ConvertParameters } from '../../../hooks/tools/convert/useConvertParame
interface ConvertFromEmailSettingsProps { interface ConvertFromEmailSettingsProps {
parameters: ConvertParameters; parameters: ConvertParameters;
onParameterChange: (key: keyof ConvertParameters, value: any) => void; onParameterChange: <K extends keyof ConvertParameters>(key: K, value: ConvertParameters[K]) => void;
disabled?: boolean; disabled?: boolean;
} }
const ConvertFromEmailSettings = ({ const ConvertFromEmailSettings = ({
parameters, parameters,
onParameterChange, onParameterChange,
disabled = false disabled = false
}: ConvertFromEmailSettingsProps) => { }: ConvertFromEmailSettingsProps) => {
const { t } = useTranslation(); const { t } = useTranslation();
return ( return (
<Stack gap="sm" data-testid="email-settings"> <Stack gap="sm" data-testid="email-settings">
<Text size="sm" fw={500}>{t("convert.emailOptions", "Email to PDF Options")}:</Text> <Text size="sm" fw={500}>{t("convert.emailOptions", "Email to PDF Options")}:</Text>
<Checkbox <Checkbox
label={t("convert.includeAttachments", "Include email attachments")} label={t("convert.includeAttachments", "Include email attachments")}
checked={parameters.emailOptions.includeAttachments} checked={parameters.emailOptions.includeAttachments}
onChange={(event) => onParameterChange('emailOptions', { onChange={(event) => onParameterChange('emailOptions', {
...parameters.emailOptions, ...parameters.emailOptions,
includeAttachments: event.currentTarget.checked includeAttachments: event.currentTarget.checked
})} })}
disabled={disabled} disabled={disabled}
data-testid="include-attachments-checkbox" data-testid="include-attachments-checkbox"
/> />
{parameters.emailOptions.includeAttachments && ( {parameters.emailOptions.includeAttachments && (
<Stack gap="xs"> <Stack gap="xs">
<Text size="xs" fw={500}>{t("convert.maxAttachmentSize", "Maximum attachment size (MB)")}:</Text> <Text size="xs" fw={500}>{t("convert.maxAttachmentSize", "Maximum attachment size (MB)")}:</Text>
<NumberInput <NumberInput
value={parameters.emailOptions.maxAttachmentSizeMB} value={parameters.emailOptions.maxAttachmentSizeMB}
onChange={(value) => onParameterChange('emailOptions', { onChange={(value) => onParameterChange('emailOptions', {
...parameters.emailOptions, ...parameters.emailOptions,
maxAttachmentSizeMB: Number(value) || 10 maxAttachmentSizeMB: Number(value) || 10
})} })}
min={1} min={1}
max={100} max={100}
@ -48,24 +48,24 @@ const ConvertFromEmailSettings = ({
/> />
</Stack> </Stack>
)} )}
<Checkbox <Checkbox
label={t("convert.includeAllRecipients", "Include CC and BCC recipients in header")} label={t("convert.includeAllRecipients", "Include CC and BCC recipients in header")}
checked={parameters.emailOptions.includeAllRecipients} checked={parameters.emailOptions.includeAllRecipients}
onChange={(event) => onParameterChange('emailOptions', { onChange={(event) => onParameterChange('emailOptions', {
...parameters.emailOptions, ...parameters.emailOptions,
includeAllRecipients: event.currentTarget.checked includeAllRecipients: event.currentTarget.checked
})} })}
disabled={disabled} disabled={disabled}
data-testid="include-all-recipients-checkbox" data-testid="include-all-recipients-checkbox"
/> />
<Checkbox <Checkbox
label={t("convert.downloadHtml", "Download HTML intermediate file instead of PDF")} label={t("convert.downloadHtml", "Download HTML intermediate file instead of PDF")}
checked={parameters.emailOptions.downloadHtml} checked={parameters.emailOptions.downloadHtml}
onChange={(event) => onParameterChange('emailOptions', { onChange={(event) => onParameterChange('emailOptions', {
...parameters.emailOptions, ...parameters.emailOptions,
downloadHtml: event.currentTarget.checked downloadHtml: event.currentTarget.checked
})} })}
disabled={disabled} disabled={disabled}
data-testid="download-html-checkbox" data-testid="download-html-checkbox"
@ -74,4 +74,4 @@ const ConvertFromEmailSettings = ({
); );
}; };
export default ConvertFromEmailSettings; export default ConvertFromEmailSettings;

View File

@ -6,7 +6,7 @@ import { ConvertParameters } from "../../../hooks/tools/convert/useConvertParame
interface ConvertFromImageSettingsProps { interface ConvertFromImageSettingsProps {
parameters: ConvertParameters; parameters: ConvertParameters;
onParameterChange: (key: keyof ConvertParameters, value: any) => void; onParameterChange: <K extends keyof ConvertParameters>(key: K, value: ConvertParameters[K]) => void;
disabled?: boolean; disabled?: boolean;
} }

View File

@ -5,28 +5,28 @@ import { ConvertParameters } from '../../../hooks/tools/convert/useConvertParame
interface ConvertFromWebSettingsProps { interface ConvertFromWebSettingsProps {
parameters: ConvertParameters; parameters: ConvertParameters;
onParameterChange: (key: keyof ConvertParameters, value: any) => void; onParameterChange: <K extends keyof ConvertParameters>(key: K, value: ConvertParameters[K]) => void;
disabled?: boolean; disabled?: boolean;
} }
const ConvertFromWebSettings = ({ const ConvertFromWebSettings = ({
parameters, parameters,
onParameterChange, onParameterChange,
disabled = false disabled = false
}: ConvertFromWebSettingsProps) => { }: ConvertFromWebSettingsProps) => {
const { t } = useTranslation(); const { t } = useTranslation();
return ( return (
<Stack gap="sm" data-testid="web-settings"> <Stack gap="sm" data-testid="web-settings">
<Text size="sm" fw={500}>{t("convert.webOptions", "Web to PDF Options")}:</Text> <Text size="sm" fw={500}>{t("convert.webOptions", "Web to PDF Options")}:</Text>
<Stack gap="xs"> <Stack gap="xs">
<Text size="xs" fw={500}>{t("convert.zoomLevel", "Zoom Level")}:</Text> <Text size="xs" fw={500}>{t("convert.zoomLevel", "Zoom Level")}:</Text>
<NumberInput <NumberInput
value={parameters.htmlOptions.zoomLevel} value={parameters.htmlOptions.zoomLevel}
onChange={(value) => onParameterChange('htmlOptions', { onChange={(value) => onParameterChange('htmlOptions', {
...parameters.htmlOptions, ...parameters.htmlOptions,
zoomLevel: Number(value) || 1.0 zoomLevel: Number(value) || 1.0
})} })}
min={0.1} min={0.1}
max={3.0} max={3.0}
@ -36,9 +36,9 @@ const ConvertFromWebSettings = ({
/> />
<Slider <Slider
value={parameters.htmlOptions.zoomLevel} value={parameters.htmlOptions.zoomLevel}
onChange={(value) => onParameterChange('htmlOptions', { onChange={(value) => onParameterChange('htmlOptions', {
...parameters.htmlOptions, ...parameters.htmlOptions,
zoomLevel: value zoomLevel: value
})} })}
min={0.1} min={0.1}
max={3.0} max={3.0}
@ -51,4 +51,4 @@ const ConvertFromWebSettings = ({
); );
}; };
export default ConvertFromWebSettings; export default ConvertFromWebSettings;

View File

@ -26,7 +26,7 @@ import { StirlingFile } from "../../../types/fileContext";
interface ConvertSettingsProps { interface ConvertSettingsProps {
parameters: ConvertParameters; parameters: ConvertParameters;
onParameterChange: (key: keyof ConvertParameters, value: any) => void; onParameterChange: <K extends keyof ConvertParameters>(key: K, value: ConvertParameters[K]) => void;
getAvailableToExtensions: (fromExtension: string) => Array<{value: string, label: string, group: string}>; getAvailableToExtensions: (fromExtension: string) => Array<{value: string, label: string, group: string}>;
selectedFiles: StirlingFile[]; selectedFiles: StirlingFile[];
disabled?: boolean; disabled?: boolean;

View File

@ -6,7 +6,7 @@ import { ConvertParameters } from "../../../hooks/tools/convert/useConvertParame
interface ConvertToImageSettingsProps { interface ConvertToImageSettingsProps {
parameters: ConvertParameters; parameters: ConvertParameters;
onParameterChange: (key: keyof ConvertParameters, value: any) => void; onParameterChange: <K extends keyof ConvertParameters>(key: K, value: ConvertParameters[K]) => void;
disabled?: boolean; disabled?: boolean;
} }

View File

@ -7,16 +7,16 @@ import { StirlingFile } from '../../../types/fileContext';
interface ConvertToPdfaSettingsProps { interface ConvertToPdfaSettingsProps {
parameters: ConvertParameters; parameters: ConvertParameters;
onParameterChange: (key: keyof ConvertParameters, value: any) => void; onParameterChange: <K extends keyof ConvertParameters>(key: K, value: ConvertParameters[K]) => void;
selectedFiles: StirlingFile[]; selectedFiles: StirlingFile[];
disabled?: boolean; disabled?: boolean;
} }
const ConvertToPdfaSettings = ({ const ConvertToPdfaSettings = ({
parameters, parameters,
onParameterChange, onParameterChange,
selectedFiles, selectedFiles,
disabled = false disabled = false
}: ConvertToPdfaSettingsProps) => { }: ConvertToPdfaSettingsProps) => {
const { t } = useTranslation(); const { t } = useTranslation();
const { hasDigitalSignatures, isChecking } = usePdfSignatureDetection(selectedFiles); const { hasDigitalSignatures, isChecking } = usePdfSignatureDetection(selectedFiles);
@ -29,7 +29,7 @@ const ConvertToPdfaSettings = ({
return ( return (
<Stack gap="sm" data-testid="pdfa-settings"> <Stack gap="sm" data-testid="pdfa-settings">
<Text size="sm" fw={500}>{t("convert.pdfaOptions", "PDF/A Options")}:</Text> <Text size="sm" fw={500}>{t("convert.pdfaOptions", "PDF/A Options")}:</Text>
{hasDigitalSignatures && ( {hasDigitalSignatures && (
<Alert color="yellow"> <Alert color="yellow">
<Text size="sm"> <Text size="sm">
@ -37,14 +37,14 @@ const ConvertToPdfaSettings = ({
</Text> </Text>
</Alert> </Alert>
)} )}
<Stack gap="xs"> <Stack gap="xs">
<Text size="xs" fw={500}>{t("convert.outputFormat", "Output Format")}:</Text> <Text size="xs" fw={500}>{t("convert.outputFormat", "Output Format")}:</Text>
<Select <Select
value={parameters.pdfaOptions.outputFormat} value={parameters.pdfaOptions.outputFormat}
onChange={(value) => onParameterChange('pdfaOptions', { onChange={(value) => onParameterChange('pdfaOptions', {
...parameters.pdfaOptions, ...parameters.pdfaOptions,
outputFormat: value || 'pdfa-1' outputFormat: value || 'pdfa-1'
})} })}
data={pdfaFormatOptions} data={pdfaFormatOptions}
disabled={disabled || isChecking} disabled={disabled || isChecking}
@ -58,4 +58,4 @@ const ConvertToPdfaSettings = ({
); );
}; };
export default ConvertToPdfaSettings; export default ConvertToPdfaSettings;

View File

@ -16,7 +16,7 @@ interface AdvancedOption {
interface AdvancedOCRSettingsProps { interface AdvancedOCRSettingsProps {
advancedOptions: string[]; advancedOptions: string[];
ocrRenderType?: string; ocrRenderType?: string;
onParameterChange: (key: keyof OCRParameters, value: any) => void; onParameterChange: <K extends keyof OCRParameters>(key: K, value: OCRParameters[K]) => void;
disabled?: boolean; disabled?: boolean;
} }
@ -40,7 +40,7 @@ const AdvancedOCRSettings: React.FC<AdvancedOCRSettingsProps> = ({
// Handle individual checkbox changes // Handle individual checkbox changes
const handleCheckboxChange = (optionValue: string, checked: boolean) => { const handleCheckboxChange = (optionValue: string, checked: boolean) => {
const option = advancedOptionsData.find(opt => opt.value === optionValue); const option = advancedOptionsData.find(opt => opt.value === optionValue);
if (option?.isSpecial) { if (option?.isSpecial) {
// Handle special options (like compatibility mode) differently // Handle special options (like compatibility mode) differently
if (optionValue === 'compatibilityMode') { if (optionValue === 'compatibilityMode') {
@ -69,7 +69,7 @@ const AdvancedOCRSettings: React.FC<AdvancedOCRSettingsProps> = ({
<Text size="sm" fw={500} mb="md"> <Text size="sm" fw={500} mb="md">
{t('ocr.settings.advancedOptions.label', 'Processing Options')} {t('ocr.settings.advancedOptions.label', 'Processing Options')}
</Text> </Text>
<Stack gap="sm"> <Stack gap="sm">
{advancedOptionsData.map((option) => ( {advancedOptionsData.map((option) => (
<Checkbox <Checkbox
@ -87,4 +87,4 @@ const AdvancedOCRSettings: React.FC<AdvancedOCRSettingsProps> = ({
); );
}; };
export default AdvancedOCRSettings; export default AdvancedOCRSettings;

View File

@ -6,7 +6,7 @@ import { OCRParameters } from '../../../hooks/tools/ocr/useOCRParameters';
interface OCRSettingsProps { interface OCRSettingsProps {
parameters: OCRParameters; parameters: OCRParameters;
onParameterChange: (key: keyof OCRParameters, value: any) => void; onParameterChange: <K extends keyof OCRParameters>(key: K, value: OCRParameters[K]) => void;
disabled?: boolean; disabled?: boolean;
} }

View File

@ -4,7 +4,7 @@ import { RemovePasswordParameters } from "../../../hooks/tools/removePassword/us
interface RemovePasswordSettingsProps { interface RemovePasswordSettingsProps {
parameters: RemovePasswordParameters; parameters: RemovePasswordParameters;
onParameterChange: (key: keyof RemovePasswordParameters, value: string) => void; onParameterChange: <K extends keyof RemovePasswordParameters>(key: K, value: RemovePasswordParameters[K]) => void;
disabled?: boolean; disabled?: boolean;
} }

View File

@ -4,7 +4,7 @@ import { SanitizeParameters, defaultParameters } from "../../../hooks/tools/sani
interface SanitizeSettingsProps { interface SanitizeSettingsProps {
parameters: SanitizeParameters; parameters: SanitizeParameters;
onParameterChange: (key: keyof SanitizeParameters, value: boolean) => void; onParameterChange: <K extends keyof SanitizeParameters>(key: K, value: SanitizeParameters[K]) => void;
disabled?: boolean; disabled?: boolean;
} }

View File

@ -1,11 +1,11 @@
import { Stack, TextInput, Select, Checkbox } from '@mantine/core'; import { Stack, TextInput, Select, Checkbox } from '@mantine/core';
import { useTranslation } from 'react-i18next'; import { useTranslation } from 'react-i18next';
import { isSplitMode, SPLIT_MODES, SPLIT_TYPES } from '../../../constants/splitConstants'; import { isSplitMode, isSplitType, SPLIT_MODES, SPLIT_TYPES } from '../../../constants/splitConstants';
import { SplitParameters } from '../../../hooks/tools/split/useSplitParameters'; import { SplitParameters } from '../../../hooks/tools/split/useSplitParameters';
export interface SplitSettingsProps { export interface SplitSettingsProps {
parameters: SplitParameters; parameters: SplitParameters;
onParameterChange: (parameter: keyof SplitParameters, value: string | boolean) => void; onParameterChange: <K extends keyof SplitParameters>(key: K, value: SplitParameters[K]) => void;
disabled?: boolean; disabled?: boolean;
} }
@ -62,7 +62,7 @@ const SplitSettings = ({
<Select <Select
label={t("split-by-size-or-count.type.label", "Split Type")} label={t("split-by-size-or-count.type.label", "Split Type")}
value={parameters.splitType} value={parameters.splitType}
onChange={(v) => v && onParameterChange('splitType', v)} onChange={(v) => isSplitType(v) && onParameterChange('splitType', v)}
disabled={disabled} disabled={disabled}
data={[ data={[
{ value: SPLIT_TYPES.SIZE, label: t("split-by-size-or-count.type.size", "By Size") }, { value: SPLIT_TYPES.SIZE, label: t("split-by-size-or-count.type.size", "By Size") },