Files
twenty/front/src/modules/object-metadata/hooks/useObjectMetadataItem.ts
Charles Bochet 726e375616 Complete labelIdentifer, relationPicker first implementation (#2618)
* Fix first column main identifier

* Fixes
2023-11-21 18:32:36 +01:00

77 lines
2.2 KiB
TypeScript

import { gql } from '@apollo/client';
import { useRecoilValue } from 'recoil';
import { objectMetadataItemFamilySelector } from '@/object-metadata/states/objectMetadataItemFamilySelector';
import { useGenerateCreateOneObjectMutation } from '@/object-record/utils/generateCreateOneObjectMutation';
import { useGenerateDeleteOneObjectMutation } from '@/object-record/utils/useGenerateDeleteOneObjectMutation';
import { useGenerateFindManyCustomObjectsQuery } from '@/object-record/utils/useGenerateFindManyCustomObjectsQuery';
import { useGenerateFindOneCustomObjectQuery } from '@/object-record/utils/useGenerateFindOneCustomObjectQuery';
import { useGenerateUpdateOneObjectMutation } from '@/object-record/utils/useGenerateUpdateOneObjectMutation';
import { isDefined } from '~/utils/isDefined';
import { ObjectMetadataItemIdentifier } from '../types/ObjectMetadataItemIdentifier';
export const EMPTY_QUERY = gql`
query EmptyQuery {
empty
}
`;
export const EMPTY_MUTATION = gql`
mutation EmptyMutation {
empty
}
`;
export const useObjectMetadataItem = ({
objectNamePlural,
objectNameSingular,
}: ObjectMetadataItemIdentifier) => {
const objectMetadataItem = useRecoilValue(
objectMetadataItemFamilySelector({
objectNamePlural,
objectNameSingular,
}),
);
const objectNotFoundInMetadata = !isDefined(objectMetadataItem);
const findManyQuery = useGenerateFindManyCustomObjectsQuery({
objectMetadataItem,
});
const findOneQuery = useGenerateFindOneCustomObjectQuery({
objectMetadataItem,
});
const createOneMutation = useGenerateCreateOneObjectMutation({
objectMetadataItem,
});
const updateOneMutation = useGenerateUpdateOneObjectMutation({
objectMetadataItem,
});
const deleteOneMutation = useGenerateDeleteOneObjectMutation({
objectMetadataItem,
});
const labelIdentifierFieldMetadataId = objectMetadataItem?.fields.find(
({ name }) => name === 'name',
)?.id;
const basePathToShowPage = `/object/${objectMetadataItem?.nameSingular}/`;
return {
labelIdentifierFieldMetadataId,
basePathToShowPage,
objectMetadataItem,
objectNotFoundInMetadata,
findManyQuery,
findOneQuery,
createOneMutation,
updateOneMutation,
deleteOneMutation,
};
};