Added option to prevent sending requests to twenty-icons (#16723)

Solution for #15891


https://github.com/user-attachments/assets/82ce5c4b-0a78-45a8-8196-413473887820

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
BOHEUS
2026-01-30 15:56:22 +00:00
committed by GitHub
parent cc1ca630fd
commit 2bcae523ac
34 changed files with 156 additions and 17 deletions
@@ -4,16 +4,22 @@ import { useRecoilValue } from 'recoil';
import { PreComputedChipGeneratorsContext } from '@/object-metadata/contexts/PreComputedChipGeneratorsContext';
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
import { getRecordChipGenerators } from '@/object-record/utils/getRecordChipGenerators';
import { allowRequestsToTwentyIconsState } from '@/client-config/states/allowRequestsToTwentyIcons';
export const PreComputedChipGeneratorsProvider = ({
children,
}: React.PropsWithChildren) => {
const objectMetadataItems = useRecoilValue(objectMetadataItemsState);
const allowRequestsToTwentyIcons = useRecoilValue(
allowRequestsToTwentyIconsState,
);
const { chipGeneratorPerObjectPerField, identifierChipGeneratorPerObject } =
useMemo(() => {
return getRecordChipGenerators(objectMetadataItems);
}, [objectMetadataItems]);
return getRecordChipGenerators(
objectMetadataItems,
allowRequestsToTwentyIcons,
);
}, [allowRequestsToTwentyIcons, objectMetadataItems]);
return (
<>
@@ -19,7 +19,7 @@ describe('useGetObjectRecordIdentifierByNameSingular', () => {
setMetadataItems(generatedMockObjectMetadataItems);
return useGetObjectRecordIdentifierByNameSingular()(
return useGetObjectRecordIdentifierByNameSingular(true)(
record,
objectNameSingular,
);
@@ -13,6 +13,7 @@ describe('useMapToObjectRecordIdentifier', () => {
() => {
const { mapToObjectRecordIdentifier } = useMapToObjectRecordIdentifier({
objectNameSingular: 'person',
allowRequestsToTwentyIcons: true,
});
return mapToObjectRecordIdentifier({
@@ -4,7 +4,9 @@ import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadat
import { getObjectRecordIdentifier } from '@/object-metadata/utils/getObjectRecordIdentifier';
import { type ObjectRecordIdentifier } from '@/object-record/types/ObjectRecordIdentifier';
export const useGetObjectRecordIdentifierByNameSingular = () => {
export const useGetObjectRecordIdentifierByNameSingular = (
allowRequestsToTwentyIcons: boolean,
) => {
const objectMetadataItems = useRecoilValue(objectMetadataItemsState);
return (record: any, objectNameSingular: string): ObjectRecordIdentifier => {
@@ -21,6 +23,7 @@ export const useGetObjectRecordIdentifierByNameSingular = () => {
return getObjectRecordIdentifier({
objectMetadataItem,
record,
allowRequestsToTwentyIcons,
});
};
};
@@ -4,15 +4,21 @@ import { type ObjectRecord } from '@/object-record/types/ObjectRecord';
export const useMapToObjectRecordIdentifier = ({
objectNameSingular,
allowRequestsToTwentyIcons,
}: {
objectNameSingular: string;
allowRequestsToTwentyIcons: boolean;
}) => {
const { objectMetadataItem } = useObjectMetadataItem({
objectNameSingular,
});
const mapToObjectRecordIdentifier = (record: ObjectRecord) => {
return getObjectRecordIdentifier({ objectMetadataItem, record });
return getObjectRecordIdentifier({
objectMetadataItem,
record,
allowRequestsToTwentyIcons,
});
};
return { mapToObjectRecordIdentifier };
@@ -15,12 +15,16 @@ export const getAvatarUrl = (
objectNameSingular: string,
record: ObjectRecord,
imageIdentifierFieldMetadataItem: FieldMetadataItem | undefined,
allowRequestsToTwentyIcons?: boolean | undefined,
) => {
if (objectNameSingular === CoreObjectNameSingular.WorkspaceMember) {
return record.avatarUrl ?? undefined;
}
if (objectNameSingular === CoreObjectNameSingular.Company) {
if (
objectNameSingular === CoreObjectNameSingular.Company &&
allowRequestsToTwentyIcons === true
) {
return getLogoUrlFromDomainName(
getCompanyDomainName(record as Company) ?? '',
);
@@ -11,6 +11,7 @@ import { getLinkToShowPage } from './getLinkToShowPage';
export const getObjectRecordIdentifier = ({
objectMetadataItem,
record,
allowRequestsToTwentyIcons,
}: {
objectMetadataItem: Pick<
ObjectMetadataItem,
@@ -20,6 +21,7 @@ export const getObjectRecordIdentifier = ({
| 'imageIdentifierFieldMetadataId'
>;
record: ObjectRecord;
allowRequestsToTwentyIcons: boolean;
}): ObjectRecordIdentifier => {
const labelIdentifierFieldMetadataItem =
getLabelIdentifierFieldMetadataItem(objectMetadataItem);
@@ -40,6 +42,7 @@ export const getObjectRecordIdentifier = ({
objectMetadataItem.nameSingular,
record,
imageIdentifierFieldMetadata,
allowRequestsToTwentyIcons,
);
const linkToShowPage = getLinkToShowPage(