# Introduction Avoid having multiple `isDefined` definition across our pacakges Also avoid importing `isDefined` from `twenty-ui` which exposes a huge barrel for a such little util function ## In a nutshell Removed own `isDefined.ts` definition from `twenty-ui` `twenty-front` and `twenty-server` to move it to `twenty-shared`. Updated imports for each packages, and added explicit dependencies to `twenty-shared` if not already in place Related PR https://github.com/twentyhq/twenty/pull/9941
38 lines
1.2 KiB
TypeScript
38 lines
1.2 KiB
TypeScript
import { useRecoilValue } from 'recoil';
|
|
|
|
import { currentWorkspaceState } from '@/auth/states/currentWorkspaceState';
|
|
import { objectMetadataItemFamilySelector } from '@/object-metadata/states/objectMetadataItemFamilySelector';
|
|
import { isDefined, isWorkspaceActiveOrSuspended } from 'twenty-shared';
|
|
import { generatedMockObjectMetadataItems } from '~/testing/mock-data/generatedMockObjectMetadataItems';
|
|
|
|
export const useObjectNameSingularFromPlural = ({
|
|
objectNamePlural,
|
|
}: {
|
|
objectNamePlural: string;
|
|
}) => {
|
|
const currentWorkspace = useRecoilValue(currentWorkspaceState);
|
|
|
|
let objectMetadataItem = useRecoilValue(
|
|
objectMetadataItemFamilySelector({
|
|
objectName: objectNamePlural,
|
|
objectNameType: 'plural',
|
|
}),
|
|
);
|
|
|
|
if (!isWorkspaceActiveOrSuspended(currentWorkspace)) {
|
|
objectMetadataItem =
|
|
generatedMockObjectMetadataItems.find(
|
|
(objectMetadataItem) =>
|
|
objectMetadataItem.namePlural === objectNamePlural,
|
|
) ?? null;
|
|
}
|
|
|
|
if (!isDefined(objectMetadataItem)) {
|
|
throw new Error(
|
|
`Object metadata item not found for ${objectNamePlural} object`,
|
|
);
|
|
}
|
|
|
|
return { objectNameSingular: objectMetadataItem.nameSingular };
|
|
};
|