58 lines
1.9 KiB
TypeScript
58 lines
1.9 KiB
TypeScript
import { MetadataFieldDataType } from '@/settings/data-model/types/ObjectFieldDataType';
|
|
import { Field } from '~/generated/graphql';
|
|
|
|
import { formatFieldMetadataItemInput } from '../utils/formatFieldMetadataItemInput';
|
|
|
|
import { useCreateOneFieldMetadataItem } from './useCreateOneFieldMetadataItem';
|
|
import { useDeleteOneFieldMetadataItem } from './useDeleteOneFieldMetadataItem';
|
|
import { useUpdateOneFieldMetadataItem } from './useUpdateOneFieldMetadataItem';
|
|
|
|
export const useFieldMetadataItem = () => {
|
|
const { createOneFieldMetadataItem } = useCreateOneFieldMetadataItem();
|
|
const { updateOneFieldMetadataItem } = useUpdateOneFieldMetadataItem();
|
|
const { deleteOneFieldMetadataItem } = useDeleteOneFieldMetadataItem();
|
|
|
|
const createMetadataField = (
|
|
input: Pick<Field, 'label' | 'icon' | 'description'> & {
|
|
objectMetadataId: string;
|
|
type: MetadataFieldDataType;
|
|
},
|
|
) =>
|
|
createOneFieldMetadataItem({
|
|
...formatFieldMetadataItemInput(input),
|
|
objectMetadataId: input.objectMetadataId,
|
|
type: input.type,
|
|
});
|
|
|
|
const editMetadataField = (
|
|
input: Pick<Field, 'id' | 'label' | 'icon' | 'description'>,
|
|
) =>
|
|
updateOneFieldMetadataItem({
|
|
fieldMetadataIdToUpdate: input.id,
|
|
updatePayload: formatFieldMetadataItemInput(input),
|
|
});
|
|
|
|
const activateMetadataField = (metadataField: Field) =>
|
|
updateOneFieldMetadataItem({
|
|
fieldMetadataIdToUpdate: metadataField.id,
|
|
updatePayload: { isActive: true },
|
|
});
|
|
|
|
const disableMetadataField = (metadataField: Field) =>
|
|
updateOneFieldMetadataItem({
|
|
fieldMetadataIdToUpdate: metadataField.id,
|
|
updatePayload: { isActive: false },
|
|
});
|
|
|
|
const eraseMetadataField = (metadataField: Field) =>
|
|
deleteOneFieldMetadataItem(metadataField.id);
|
|
|
|
return {
|
|
activateMetadataField,
|
|
createMetadataField,
|
|
disableMetadataField,
|
|
eraseMetadataField,
|
|
editMetadataField,
|
|
};
|
|
};
|