import { Hypermedia, HypermediaAction } from 'first-npm-package-nicule/core';

export function moveFieldAfter(fieldName, afterFieldName): (hypermediaAction: HypermediaAction, hypermedia: Hypermedia) => HypermediaAction {
    return (hypermediaAction: HypermediaAction) => {
        const { fields: oldFields, ...rest } = hypermediaAction;
        const field = oldFields.find(({ name }) => name === fieldName);
        const fields = oldFields.filter(({ name }) => name !== fieldName);
        const afterIndex = fields.findIndex(({ name }) => name === afterFieldName) + 1;
        fields.splice(afterIndex, 0, field);

        return {
            ...rest,
            fields
        };
    };
}
