import { Hypermedia, HypermediaAction } from 'first-npm-package-nicule/core';

export function prefixFieldOptions(fieldName: string, prefix: string): (hypermediaAction: HypermediaAction, hypermedia: Hypermedia) => HypermediaAction {
    return (hypermediaAction: HypermediaAction) => {
        const { fields: oldFields, ...rest } = hypermediaAction;
        const fields = [];
        const groupedFields = [];
        oldFields.forEach((oldField, index) => {
            if (fieldName === oldField.name && oldField.options) {
                const newOptions = oldField.options.map(({ name, ...option }) => ({ ...option, name: prefix + name }));
                fields.push({ ...oldField, options: newOptions });
            } else {
                fields.push(oldField);
            }
        });

        return {
            ...rest,
            fields
        };
    };
}
