Fix automations

This commit is contained in:
James Brunton 2025-09-15 15:57:27 +01:00
parent 06dbe8cc06
commit a5c0b0ca04
2 changed files with 52 additions and 34 deletions

View File

@ -1,6 +1,6 @@
import { Stack, Divider, Text } from "@mantine/core"; import { Stack, Divider, Text } from "@mantine/core";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import { ChangeMetadataParameters } from "../../../hooks/tools/changeMetadata/useChangeMetadataParameters"; import { ChangeMetadataParameters, createCustomMetadataFunctions } from "../../../hooks/tools/changeMetadata/useChangeMetadataParameters";
import { useMetadataExtraction } from "../../../hooks/tools/changeMetadata/useMetadataExtraction"; import { useMetadataExtraction } from "../../../hooks/tools/changeMetadata/useMetadataExtraction";
import DeleteAllStep from "./steps/DeleteAllStep"; import DeleteAllStep from "./steps/DeleteAllStep";
import StandardMetadataStep from "./steps/StandardMetadataStep"; import StandardMetadataStep from "./steps/StandardMetadataStep";
@ -11,21 +11,21 @@ interface ChangeMetadataSingleStepProps {
parameters: ChangeMetadataParameters; parameters: ChangeMetadataParameters;
onParameterChange: <K extends keyof ChangeMetadataParameters>(key: K, value: ChangeMetadataParameters[K]) => void; onParameterChange: <K extends keyof ChangeMetadataParameters>(key: K, value: ChangeMetadataParameters[K]) => void;
disabled?: boolean; disabled?: boolean;
addCustomMetadata: (key?: string, value?: string) => void;
removeCustomMetadata: (id: string) => void;
updateCustomMetadata: (id: string, key: string, value: string) => void;
} }
const ChangeMetadataSingleStep = ({ const ChangeMetadataSingleStep = ({
parameters, parameters,
onParameterChange, onParameterChange,
disabled = false, disabled = false
addCustomMetadata,
removeCustomMetadata,
updateCustomMetadata
}: ChangeMetadataSingleStepProps) => { }: ChangeMetadataSingleStepProps) => {
const { t } = useTranslation(); const { t } = useTranslation();
// Get custom metadata functions using the utility
const { addCustomMetadata, removeCustomMetadata, updateCustomMetadata } = createCustomMetadataFunctions(
parameters,
onParameterChange
);
// Extract metadata from uploaded files // Extract metadata from uploaded files
const { isExtractingMetadata } = useMetadataExtraction({ const { isExtractingMetadata } = useMetadataExtraction({
updateParameter: onParameterChange, updateParameter: onParameterChange,

View File

@ -42,6 +42,45 @@ export const defaultParameters: ChangeMetadataParameters = {
// Global counter for custom metadata IDs // Global counter for custom metadata IDs
let customMetadataIdCounter = 1; let customMetadataIdCounter = 1;
// Utility functions that can work with external parameters
export const createCustomMetadataFunctions = (
parameters: ChangeMetadataParameters,
onParameterChange: <K extends keyof ChangeMetadataParameters>(key: K, value: ChangeMetadataParameters[K]) => void
) => {
const addCustomMetadata = (key: string = '', value: string = '') => {
const newEntry: CustomMetadataEntry = {
key,
value,
id: `custom${customMetadataIdCounter++}`,
};
onParameterChange('customMetadata', [
...parameters.customMetadata,
newEntry,
]);
};
const removeCustomMetadata = (id: string) => {
onParameterChange('customMetadata',
parameters.customMetadata.filter(entry => entry.id !== id)
);
};
const updateCustomMetadata = (id: string, key: string, value: string) => {
onParameterChange('customMetadata',
parameters.customMetadata.map(entry =>
entry.id === id ? { ...entry, key, value } : entry
)
);
};
return {
addCustomMetadata,
removeCustomMetadata,
updateCustomMetadata
};
};
// Validation function // Validation function
const validateParameters = (params: ChangeMetadataParameters): boolean => { const validateParameters = (params: ChangeMetadataParameters): boolean => {
// If deleteAll is true, no other validation needed // If deleteAll is true, no other validation needed
@ -82,32 +121,11 @@ export const useChangeMetadataParameters = (): ChangeMetadataParametersHook => {
validateFn: validateParameters, validateFn: validateParameters,
}); });
const addCustomMetadata = (key: string = '', value: string = '') => { // Use the utility functions with the hook's parameters and updateParameter
const newEntry: CustomMetadataEntry = { const { addCustomMetadata, removeCustomMetadata, updateCustomMetadata } = createCustomMetadataFunctions(
key, base.parameters,
value, base.updateParameter,
id: `custom${customMetadataIdCounter++}`,
};
base.updateParameter('customMetadata', [
...base.parameters.customMetadata,
newEntry,
]);
};
const removeCustomMetadata = (id: string) => {
base.updateParameter('customMetadata',
base.parameters.customMetadata.filter(entry => entry.id !== id)
); );
};
const updateCustomMetadata = (id: string, key: string, value: string) => {
base.updateParameter('customMetadata',
base.parameters.customMetadata.map(entry =>
entry.id === id ? { ...entry, key, value } : entry
)
);
};
return { return {
...base, ...base,