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
@@ -20,6 +20,8 @@ import {
jsonRelationFilterValueSchema,
} from 'twenty-shared/utils';
import { IconUserCircle } from 'twenty-ui/display';
import { useRecoilValue } from 'recoil';
import { allowRequestsToTwentyIconsState } from '@/client-config/states/allowRequestsToTwentyIcons';
export const EMPTY_FILTER_VALUE: string = JSON.stringify({
isCurrentWorkspaceMemberSelected: false,
@@ -41,6 +43,10 @@ export const ObjectFilterDropdownRecordSelect = ({
fieldMetadataItemUsedInDropdownComponentSelector,
);
const allowRequestsToTwentyIcons = useRecoilValue(
allowRequestsToTwentyIconsState,
);
const { objectFilterDropdownFilterValue } =
useObjectFilterDropdownFilterValue();
@@ -120,6 +126,7 @@ export const ObjectFilterDropdownRecordSelect = ({
selectedIds: selectedRecordIds,
objectNameSingular,
limit: 10,
allowRequestsToTwentyIcons,
});
const currentWorkspaceMemberSelectableItem: SelectableItem = {
@@ -14,6 +14,7 @@ import { useIsMobile } from '@/ui/utilities/responsive/hooks/useIsMobile';
import { useRecoilValue } from 'recoil';
import { isDefined } from 'twenty-shared/utils';
import { FieldMetadataType } from '~/generated-metadata/graphql';
import { allowRequestsToTwentyIconsState } from '@/client-config/states/allowRequestsToTwentyIcons';
type SummaryCardProps = {
objectNameSingular: string;
@@ -37,6 +38,9 @@ export const SummaryCard = ({
fieldName: 'createdAt',
}),
);
const allowRequestsToTwentyIcons = useRecoilValue(
allowRequestsToTwentyIconsState,
);
const { onUploadPicture, useUpdateOneObjectRecordMutation } =
useRecordShowContainerActions({
@@ -49,6 +53,7 @@ export const SummaryCard = ({
const recordIdentifier = useRecoilValue(
recordStoreIdentifierFamilySelector({
recordId: objectRecordId,
allowRequestsToTwentyIcons,
}),
);
@@ -8,7 +8,13 @@ import { uncapitalize } from 'twenty-shared/utils';
export const recordStoreIdentifierFamilySelector = selectorFamily({
key: 'recordStoreIdentifierFamilySelector',
get:
({ recordId }: { recordId: string }) =>
({
recordId,
allowRequestsToTwentyIcons,
}: {
recordId: string;
allowRequestsToTwentyIcons: boolean;
}) =>
({ get }) => {
const recordFromStore = get(recordStoreFamilyState(recordId));
const objectNameSingular = uncapitalize(
@@ -28,6 +34,7 @@ export const recordStoreIdentifierFamilySelector = selectorFamily({
return getObjectRecordIdentifier({
objectMetadataItem: objectMetadataItem,
record: recordFromStore,
allowRequestsToTwentyIcons,
});
},
});
@@ -8,7 +8,13 @@ import { isDefined, uncapitalize } from 'twenty-shared/utils';
export const recordStoreIdentifiersFamilySelector = selectorFamily({
key: 'recordStoreIdentifiersFamilySelector',
get:
({ recordIds }: { recordIds: string[] }) =>
({
recordIds,
allowRequestsToTwentyIcons,
}: {
recordIds: string[];
allowRequestsToTwentyIcons: boolean;
}) =>
({ get }) => {
const objectMetadataItems = get(objectMetadataItemsState);
@@ -30,6 +36,7 @@ export const recordStoreIdentifiersFamilySelector = selectorFamily({
return getObjectRecordIdentifier({
objectMetadataItem: objectMetadataItem,
record: recordFromStore,
allowRequestsToTwentyIcons,
});
})
.filter(isDefined);
@@ -18,6 +18,7 @@ export const useRecordsForSelect = ({
limit,
excludedRecordIds = [],
objectNameSingular,
allowRequestsToTwentyIcons,
}: {
searchFilterText: string;
sortOrder?: OrderBy;
@@ -25,9 +26,11 @@ export const useRecordsForSelect = ({
limit?: number;
excludedRecordIds?: string[];
objectNameSingular: string;
allowRequestsToTwentyIcons: boolean;
}) => {
const { mapToObjectRecordIdentifier } = useMapToObjectRecordIdentifier({
objectNameSingular,
allowRequestsToTwentyIcons,
});
const filters = [
@@ -16,6 +16,7 @@ import { FieldMetadataType } from '~/generated-metadata/graphql';
export const getRecordChipGenerators = (
objectMetadataItems: ObjectMetadataItem[],
allowRequestsToTwentyIcons?: boolean,
) => {
const chipGeneratorPerObjectPerField: ChipGeneratorPerObjectNameSingularPerFieldName =
{};
@@ -92,6 +93,7 @@ export const getRecordChipGenerators = (
objectMetadataItemToUse.nameSingular,
record,
imageIdentifierFieldMetadataToUse,
allowRequestsToTwentyIcons,
),
avatarType,
isLabelIdentifier,