follow up #12033

in #12033, SettingsDataModelFieldRelationForm I changed the the use of
objectMetadataItems to activeObjectMetadataItems, which filtered out
system objects. The naming was one factor for this confusion
Renaming it everywhere to specify that they don't include system objects

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
nitin
2025-05-21 15:15:33 +05:30
committed by GitHub
parent c29ed1c0c9
commit 819b3c6c0d
21 changed files with 116 additions and 107 deletions

View File

@ -1,5 +1,5 @@
import { GoToHotkeyItemEffect } from '@/app/effect-components/GoToHotkeyItemEffect';
import { useNonSystemActiveObjectMetadataItems } from '@/object-metadata/hooks/useNonSystemActiveObjectMetadataItems';
import { useFilteredObjectMetadataItems } from '@/object-metadata/hooks/useFilteredObjectMetadataItems';
import { isNavigationDrawerExpandedState } from '@/ui/navigation/states/isNavigationDrawerExpanded';
import { navigationDrawerExpandedMemorizedState } from '@/ui/navigation/states/navigationDrawerExpandedMemorizedState';
import { navigationMemorizedUrlState } from '@/ui/navigation/states/navigationMemorizedUrlState';
@ -8,8 +8,8 @@ import { useLocation } from 'react-router-dom';
import { useRecoilCallback } from 'recoil';
export const GotoHotkeysEffectsProvider = () => {
const { nonSystemActiveObjectMetadataItems } =
useNonSystemActiveObjectMetadataItems();
const { activeNonSystemObjectMetadataItems } =
useFilteredObjectMetadataItems();
const location = useLocation();
@ -27,7 +27,7 @@ export const GotoHotkeysEffectsProvider = () => {
),
});
return nonSystemActiveObjectMetadataItems.map((objectMetadataItem) => {
return activeNonSystemObjectMetadataItems.map((objectMetadataItem) => {
if (!objectMetadataItem.shortcut) {
return null;
}

View File

@ -24,7 +24,8 @@ export const CommandMenuWorkflowSelectTriggerTypeContent = ({
const { getIcon } = useIcons();
const { updateTrigger } = useUpdateWorkflowVersionTrigger({ workflow });
const { activeObjectMetadataItems } = useFilteredObjectMetadataItems();
const { activeNonSystemObjectMetadataItems } =
useFilteredObjectMetadataItems();
const setWorkflowSelectedNode = useSetRecoilComponentStateV2(
workflowSelectedNodeComponentState,
@ -45,7 +46,7 @@ export const CommandMenuWorkflowSelectTriggerTypeContent = ({
getTriggerDefaultDefinition({
defaultLabel,
type,
activeObjectMetadataItems,
activeNonSystemObjectMetadataItems,
}),
);

View File

@ -64,16 +64,17 @@ export const useWorkspaceFavorites = () => {
}, []),
);
const { activeObjectMetadataItems } = useFilteredObjectMetadataItems();
const { activeNonSystemObjectMetadataItems } =
useFilteredObjectMetadataItems();
const activeObjectMetadataItemsInWorkspaceFavorites =
activeObjectMetadataItems.filter((item) =>
const activeNonSystemObjectMetadataItemsInWorkspaceFavorites =
activeNonSystemObjectMetadataItems.filter((item) =>
favoriteViewObjectMetadataIds.has(item.id),
);
return {
workspaceFavorites: sortedWorkspaceFavorites,
workspaceFavoritesObjectMetadataItems:
activeObjectMetadataItemsInWorkspaceFavorites,
activeNonSystemObjectMetadataItemsInWorkspaceFavorites,
};
};

View File

@ -6,13 +6,15 @@ import { prefetchViewsState } from '@/prefetch/states/prefetchViewsState';
import { AppPath } from '@/types/AppPath';
import { useCallback, useMemo } from 'react';
import { useRecoilValue } from 'recoil';
import { getAppPath } from '~/utils/navigation/getAppPath';
import { isDefined } from 'twenty-shared/utils';
import { getAppPath } from '~/utils/navigation/getAppPath';
export const useDefaultHomePagePath = () => {
const currentUser = useRecoilValue(currentUserState);
const { activeObjectMetadataItems, alphaSortedActiveObjectMetadataItems } =
useFilteredObjectMetadataItems();
const {
activeNonSystemObjectMetadataItems,
alphaSortedActiveNonSystemObjectMetadataItems,
} = useFilteredObjectMetadataItems();
const prefetchViews = useRecoilValue(prefetchViewsState);
const lastVisitedObjectMetadataItemId = useRecoilValue(
lastVisitedObjectMetadataItemIdState,
@ -20,11 +22,11 @@ export const useDefaultHomePagePath = () => {
const getActiveObjectMetadataItemMatchingId = useCallback(
(objectMetadataId: string) => {
return activeObjectMetadataItems.find(
return activeNonSystemObjectMetadataItems.find(
(item) => item.id === objectMetadataId,
);
},
[activeObjectMetadataItems],
[activeNonSystemObjectMetadataItems],
);
const getFirstView = useCallback(
@ -36,7 +38,8 @@ export const useDefaultHomePagePath = () => {
);
const firstObjectPathInfo = useMemo<ObjectPathInfo | null>(() => {
const [firstObjectMetadataItem] = alphaSortedActiveObjectMetadataItems;
const [firstObjectMetadataItem] =
alphaSortedActiveNonSystemObjectMetadataItems;
if (!isDefined(firstObjectMetadataItem)) {
return null;
@ -45,7 +48,7 @@ export const useDefaultHomePagePath = () => {
const view = getFirstView(firstObjectMetadataItem?.id);
return { objectMetadataItem: firstObjectMetadataItem, view };
}, [alphaSortedActiveObjectMetadataItems, getFirstView]);
}, [alphaSortedActiveNonSystemObjectMetadataItems, getFirstView]);
const defaultObjectPathInfo = useMemo<ObjectPathInfo | null>(() => {
if (!isDefined(lastVisitedObjectMetadataItemId)) {

View File

@ -10,10 +10,10 @@ import { useLingui } from '@lingui/react/macro';
export const NavigationDrawerOpenedSection = () => {
const { t } = useLingui();
const { activeObjectMetadataItems } = useFilteredObjectMetadataItems();
const filteredActiveObjectMetadataItems = activeObjectMetadataItems.filter(
(item) => !item.isRemote,
);
const { activeNonSystemObjectMetadataItems } =
useFilteredObjectMetadataItems();
const filteredActiveNonSystemObjectMetadataItems =
activeNonSystemObjectMetadataItems.filter((item) => !item.isRemote);
const loading = useIsPrefetchLoading();
@ -28,7 +28,7 @@ export const NavigationDrawerOpenedSection = () => {
return;
}
const objectMetadataItem = filteredActiveObjectMetadataItems.find(
const objectMetadataItem = filteredActiveNonSystemObjectMetadataItems.find(
(item) =>
item.namePlural === currentObjectNamePlural ||
item.nameSingular === currentObjectNameSingular,

View File

@ -10,10 +10,10 @@ import { isDefined } from 'twenty-shared/utils';
export const RemoteNavigationDrawerSection = () => {
const currentUser = useRecoilValue(currentUserState);
const { activeObjectMetadataItems } = useFilteredObjectMetadataItems();
const filteredActiveObjectMetadataItems = activeObjectMetadataItems.filter(
(item) => item.isRemote,
);
const { activeNonSystemObjectMetadataItems } =
useFilteredObjectMetadataItems();
const filteredActiveNonSystemObjectMetadataItems =
activeNonSystemObjectMetadataItems.filter((item) => item.isRemote);
const loading = useIsPrefetchLoading();
if (loading && isDefined(currentUser)) {
@ -23,7 +23,7 @@ export const RemoteNavigationDrawerSection = () => {
return (
<NavigationDrawerSectionForObjectMetadataItems
sectionTitle={'Remote'}
objectMetadataItems={filteredActiveObjectMetadataItems}
objectMetadataItems={filteredActiveNonSystemObjectMetadataItems}
isRemote={true}
/>
);

View File

@ -22,7 +22,7 @@ export const useFilteredObjectMetadataItems = () => {
[isWorkflowEnabled],
);
const activeObjectMetadataItems = useMemo(
const activeNonSystemObjectMetadataItems = useMemo(
() =>
objectMetadataItems.filter(
({ isActive, isSystem, nameSingular }) =>
@ -31,8 +31,17 @@ export const useFilteredObjectMetadataItems = () => {
[isWorkflowToBeFiltered, objectMetadataItems],
);
const alphaSortedActiveObjectMetadataItems = activeObjectMetadataItems.sort(
(a, b) => {
const activeObjectMetadataItems = useMemo(
() =>
objectMetadataItems.filter(
({ isActive, nameSingular }) =>
isActive && !isWorkflowToBeFiltered(nameSingular),
),
[isWorkflowToBeFiltered, objectMetadataItems],
);
const alphaSortedActiveNonSystemObjectMetadataItems =
activeNonSystemObjectMetadataItems.sort((a, b) => {
if (a.nameSingular < b.nameSingular) {
return -1;
}
@ -40,15 +49,14 @@ export const useFilteredObjectMetadataItems = () => {
return 1;
}
return 0;
},
);
});
const inactiveObjectMetadataItems = objectMetadataItems.filter(
const inactiveNonSystemObjectMetadataItems = objectMetadataItems.filter(
({ isActive, isSystem }) => !isActive && !isSystem,
);
const findActiveObjectMetadataItemByNamePlural = (namePlural: string) =>
activeObjectMetadataItems.find(
activeNonSystemObjectMetadataItems.find(
(activeObjectMetadataItem) =>
activeObjectMetadataItem.namePlural === namePlural,
);
@ -64,12 +72,13 @@ export const useFilteredObjectMetadataItems = () => {
);
return {
activeNonSystemObjectMetadataItems,
activeObjectMetadataItems,
findObjectMetadataItemById,
findObjectMetadataItemByNamePlural,
findActiveObjectMetadataItemByNamePlural,
inactiveObjectMetadataItems,
inactiveNonSystemObjectMetadataItems,
objectMetadataItems,
alphaSortedActiveObjectMetadataItems,
alphaSortedActiveNonSystemObjectMetadataItems,
};
};

View File

@ -1,20 +0,0 @@
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
import { useMemo } from 'react';
import { useRecoilValue } from 'recoil';
export const useNonSystemActiveObjectMetadataItems = () => {
const objectMetadataItems = useRecoilValue(objectMetadataItemsState);
const nonSystemActiveObjectMetadataItems = useMemo(
() =>
objectMetadataItems.filter(
(objectMetadataItem) =>
!objectMetadataItem.isSystem && objectMetadataItem.isActive,
),
[objectMetadataItems],
);
return {
nonSystemActiveObjectMetadataItems,
};
};

View File

@ -4,8 +4,8 @@ import { Edge, Node } from '@xyflow/react';
import { useEffect } from 'react';
import { useFilteredObjectMetadataItems } from '@/object-metadata/hooks/useFilteredObjectMetadataItems';
import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull';
import { isDefined } from 'twenty-shared/utils';
import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull';
type SettingsDataModelOverviewEffectProps = {
setEdges: (edges: Edge[]) => void;
@ -17,7 +17,8 @@ export const SettingsDataModelOverviewEffect = ({
setNodes,
}: SettingsDataModelOverviewEffectProps) => {
const theme = useTheme();
const { activeObjectMetadataItems: items } = useFilteredObjectMetadataItems();
const { activeNonSystemObjectMetadataItems: items } =
useFilteredObjectMetadataItems();
useEffect(() => {
const g = new dagre.graphlib.Graph();

View File

@ -19,7 +19,7 @@ export const SettingsRolePermissionsObjectLevelObjectPickerDropdownContent = ({
}: SettingsRolePermissionsObjectLevelObjectPickerDropdownContentProps) => {
const [searchFilter, setSearchFilter] = useState('');
const { alphaSortedActiveObjectMetadataItems: objectMetadataItems } =
const { alphaSortedActiveNonSystemObjectMetadataItems: objectMetadataItems } =
useFilteredObjectMetadataItems();
const { getIcon } = useIcons();

View File

@ -61,10 +61,11 @@ export const WorkflowEditActionCreateRecord = ({
}: WorkflowEditActionCreateRecordProps) => {
const { getIcon } = useIcons();
const { activeObjectMetadataItems } = useFilteredObjectMetadataItems();
const { activeNonSystemObjectMetadataItems } =
useFilteredObjectMetadataItems();
const availableMetadata: Array<SelectOption<string>> =
activeObjectMetadataItems.map((item) => ({
activeNonSystemObjectMetadataItems.map((item) => ({
Icon: getIcon(item.icon),
label: item.labelPlural,
value: item.nameSingular,

View File

@ -39,10 +39,11 @@ export const WorkflowEditActionDeleteRecord = ({
}: WorkflowEditActionDeleteRecordProps) => {
const { getIcon } = useIcons();
const { activeObjectMetadataItems } = useFilteredObjectMetadataItems();
const { activeNonSystemObjectMetadataItems } =
useFilteredObjectMetadataItems();
const availableMetadata: Array<SelectOption<string>> =
activeObjectMetadataItems.map((item) => ({
activeNonSystemObjectMetadataItems.map((item) => ({
Icon: getIcon(item.icon),
label: item.labelPlural,
value: item.nameSingular,
@ -68,7 +69,7 @@ export const WorkflowEditActionDeleteRecord = ({
saveAction(newFormData);
};
const objectNameSingular = activeObjectMetadataItems.find(
const objectNameSingular = activeNonSystemObjectMetadataItems.find(
(item) => item.nameSingular === formData.objectName,
)?.nameSingular;

View File

@ -37,10 +37,11 @@ export const WorkflowEditActionFindRecords = ({
}: WorkflowEditActionFindRecordsProps) => {
const { getIcon } = useIcons();
const { activeObjectMetadataItems } = useFilteredObjectMetadataItems();
const { activeNonSystemObjectMetadataItems } =
useFilteredObjectMetadataItems();
const availableMetadata: Array<SelectOption<string>> =
activeObjectMetadataItems.map((item) => ({
activeNonSystemObjectMetadataItems.map((item) => ({
Icon: getIcon(item.icon),
label: item.labelPlural,
value: item.nameSingular,
@ -53,7 +54,7 @@ export const WorkflowEditActionFindRecords = ({
const isFormDisabled = actionOptions.readonly;
const selectedObjectMetadataItemNameSingular =
activeObjectMetadataItems.find(
activeNonSystemObjectMetadataItems.find(
(item) => item.nameSingular === formData.objectName,
)?.nameSingular ?? '';

View File

@ -63,10 +63,11 @@ export const WorkflowEditActionUpdateRecord = ({
}: WorkflowEditActionUpdateRecordProps) => {
const { getIcon } = useIcons();
const { activeObjectMetadataItems } = useFilteredObjectMetadataItems();
const { activeNonSystemObjectMetadataItems } =
useFilteredObjectMetadataItems();
const availableMetadata: Array<SelectOption<string>> =
activeObjectMetadataItems.map((item) => ({
activeNonSystemObjectMetadataItems.map((item) => ({
Icon: getIcon(item.icon),
label: item.labelPlural,
value: item.nameSingular,
@ -94,7 +95,7 @@ export const WorkflowEditActionUpdateRecord = ({
saveAction(newFormData);
};
const selectedObjectMetadataItem = activeObjectMetadataItems.find(
const selectedObjectMetadataItem = activeNonSystemObjectMetadataItems.find(
(item) => item.nameSingular === formData.objectName,
);

View File

@ -27,10 +27,11 @@ export const WorkflowFormFieldSettingsRecordPicker = ({
}: WorkflowFormFieldSettingsRecordPickerProps) => {
const { getIcon } = useIcons();
const { activeObjectMetadataItems } = useFilteredObjectMetadataItems();
const { activeNonSystemObjectMetadataItems } =
useFilteredObjectMetadataItems();
const availableMetadata: Array<SelectOption<string>> =
activeObjectMetadataItems.map((item) => ({
activeNonSystemObjectMetadataItems.map((item) => ({
Icon: getIcon(item.icon),
label: item.labelPlural,
value: item.nameSingular,
@ -50,7 +51,7 @@ export const WorkflowFormFieldSettingsRecordPicker = ({
onChange({
...field,
placeholder: `Select a ${
activeObjectMetadataItems.find(
activeNonSystemObjectMetadataItems.find(
(item) => item.nameSingular === updatedObjectName,
)?.labelSingular || 'record'
}`,

View File

@ -36,10 +36,11 @@ export const WorkflowEditTriggerManualForm = ({
const theme = useTheme();
const { getIcon } = useIcons();
const { activeObjectMetadataItems } = useFilteredObjectMetadataItems();
const { activeNonSystemObjectMetadataItems } =
useFilteredObjectMetadataItems();
const availableMetadata: Array<SelectOption<string>> =
activeObjectMetadataItems.map((item) => ({
activeNonSystemObjectMetadataItems.map((item) => ({
label: item.labelPlural,
value: item.nameSingular,
Icon: getIcon(item.icon),
@ -91,7 +92,7 @@ export const WorkflowEditTriggerManualForm = ({
...trigger,
settings: getManualTriggerDefaultSettings({
availability: updatedTriggerType,
activeObjectMetadataItems,
activeNonSystemObjectMetadataItems,
}),
});
}}

View File

@ -5,7 +5,7 @@ it('returns settings for a manual trigger that can be activated from any where',
expect(
getManualTriggerDefaultSettings({
availability: 'EVERYWHERE',
activeObjectMetadataItems: generatedMockObjectMetadataItems,
activeNonSystemObjectMetadataItems: generatedMockObjectMetadataItems,
}),
).toStrictEqual({
objectType: undefined,
@ -17,7 +17,7 @@ it('returns settings for a manual trigger that can be activated from any where',
expect(
getManualTriggerDefaultSettings({
availability: 'WHEN_RECORD_SELECTED',
activeObjectMetadataItems: generatedMockObjectMetadataItems,
activeNonSystemObjectMetadataItems: generatedMockObjectMetadataItems,
}),
).toStrictEqual({
objectType: generatedMockObjectMetadataItems[0].nameSingular,

View File

@ -3,12 +3,12 @@ import { generatedMockObjectMetadataItems } from '~/testing/mock-data/generatedM
import { getTriggerDefaultDefinition } from '../getTriggerDefaultDefinition';
describe('getTriggerDefaultDefinition', () => {
it('throws if the activeObjectMetadataItems list is empty', () => {
it('throws if the activeNonSystemObjectMetadataItems list is empty', () => {
expect(() => {
getTriggerDefaultDefinition({
defaultLabel: DatabaseTriggerDefaultLabel.RECORD_IS_CREATED,
type: 'DATABASE_EVENT',
activeObjectMetadataItems: [],
activeNonSystemObjectMetadataItems: [],
});
}).toThrow();
});
@ -18,7 +18,7 @@ describe('getTriggerDefaultDefinition', () => {
getTriggerDefaultDefinition({
defaultLabel: DatabaseTriggerDefaultLabel.RECORD_IS_CREATED,
type: 'DATABASE_EVENT',
activeObjectMetadataItems: generatedMockObjectMetadataItems,
activeNonSystemObjectMetadataItems: generatedMockObjectMetadataItems,
}),
).toStrictEqual({
type: 'DATABASE_EVENT',
@ -35,7 +35,7 @@ describe('getTriggerDefaultDefinition', () => {
getTriggerDefaultDefinition({
defaultLabel: DatabaseTriggerDefaultLabel.RECORD_IS_UPDATED,
type: 'DATABASE_EVENT',
activeObjectMetadataItems: generatedMockObjectMetadataItems,
activeNonSystemObjectMetadataItems: generatedMockObjectMetadataItems,
}),
).toStrictEqual({
type: 'DATABASE_EVENT',
@ -52,7 +52,7 @@ describe('getTriggerDefaultDefinition', () => {
getTriggerDefaultDefinition({
defaultLabel: DatabaseTriggerDefaultLabel.RECORD_IS_DELETED,
type: 'DATABASE_EVENT',
activeObjectMetadataItems: generatedMockObjectMetadataItems,
activeNonSystemObjectMetadataItems: generatedMockObjectMetadataItems,
}),
).toStrictEqual({
type: 'DATABASE_EVENT',
@ -69,7 +69,7 @@ describe('getTriggerDefaultDefinition', () => {
getTriggerDefaultDefinition({
defaultLabel: DatabaseTriggerDefaultLabel.RECORD_IS_CREATED,
type: 'DATABASE_EVENT',
activeObjectMetadataItems: generatedMockObjectMetadataItems,
activeNonSystemObjectMetadataItems: generatedMockObjectMetadataItems,
}),
).toStrictEqual({
type: 'DATABASE_EVENT',
@ -86,7 +86,7 @@ describe('getTriggerDefaultDefinition', () => {
getTriggerDefaultDefinition({
defaultLabel: 'Launch manually',
type: 'MANUAL',
activeObjectMetadataItems: generatedMockObjectMetadataItems,
activeNonSystemObjectMetadataItems: generatedMockObjectMetadataItems,
}),
).toStrictEqual({
type: 'MANUAL',
@ -103,7 +103,7 @@ describe('getTriggerDefaultDefinition', () => {
getTriggerDefaultDefinition({
defaultLabel: DatabaseTriggerDefaultLabel.RECORD_IS_CREATED,
type: 'unknown' as any,
activeObjectMetadataItems: generatedMockObjectMetadataItems,
activeNonSystemObjectMetadataItems: generatedMockObjectMetadataItems,
});
}).toThrow('Unknown type: unknown');
});

View File

@ -7,10 +7,10 @@ import { assertUnreachable } from '@/workflow/utils/assertUnreachable';
export const getManualTriggerDefaultSettings = ({
availability,
activeObjectMetadataItems,
activeNonSystemObjectMetadataItems,
}: {
availability: WorkflowManualTriggerAvailability;
activeObjectMetadataItems: ObjectMetadataItem[];
activeNonSystemObjectMetadataItems: ObjectMetadataItem[];
}): WorkflowManualTriggerSettings => {
switch (availability) {
case 'EVERYWHERE': {
@ -21,7 +21,7 @@ export const getManualTriggerDefaultSettings = ({
}
case 'WHEN_RECORD_SELECTED': {
return {
objectType: activeObjectMetadataItems[0].nameSingular,
objectType: activeNonSystemObjectMetadataItems[0].nameSingular,
outputSchema: {},
};
}

View File

@ -10,13 +10,13 @@ import { getManualTriggerDefaultSettings } from '@/workflow/workflow-trigger/uti
export const getTriggerDefaultDefinition = ({
defaultLabel,
type,
activeObjectMetadataItems,
activeNonSystemObjectMetadataItems,
}: {
defaultLabel: string;
type: WorkflowTriggerType;
activeObjectMetadataItems: ObjectMetadataItem[];
activeNonSystemObjectMetadataItems: ObjectMetadataItem[];
}): WorkflowTrigger => {
if (activeObjectMetadataItems.length === 0) {
if (activeNonSystemObjectMetadataItems.length === 0) {
throw new Error(
'This function need to receive at least one object metadata item to run.',
);
@ -28,7 +28,7 @@ export const getTriggerDefaultDefinition = ({
type,
name: defaultLabel,
settings: {
eventName: `${activeObjectMetadataItems[0].nameSingular}.${
eventName: `${activeNonSystemObjectMetadataItems[0].nameSingular}.${
DATABASE_TRIGGER_TYPES.find(
(availableEvent) => availableEvent.defaultLabel === defaultLabel,
)?.event
@ -43,7 +43,7 @@ export const getTriggerDefaultDefinition = ({
name: defaultLabel,
settings: getManualTriggerDefaultSettings({
availability: 'WHEN_RECORD_SELECTED',
activeObjectMetadataItems,
activeNonSystemObjectMetadataItems,
}),
};
}

View File

@ -23,18 +23,18 @@ import styled from '@emotion/styled';
import { Trans, useLingui } from '@lingui/react/macro';
import { isNonEmptyArray } from '@sniptt/guards';
import { useMemo, useState } from 'react';
import { GET_SETTINGS_OBJECT_TABLE_METADATA } from '~/pages/settings/data-model/constants/SettingsObjectTableMetadata';
import { SettingsObjectTableItem } from '~/pages/settings/data-model/types/SettingsObjectTableItem';
import { getSettingsPath } from '~/utils/navigation/getSettingsPath';
import { Button } from 'twenty-ui/input';
import {
H2Title,
IconChevronRight,
IconPlus,
IconSearch,
} from 'twenty-ui/display';
import { Button } from 'twenty-ui/input';
import { Section } from 'twenty-ui/layout';
import { UndecoratedLink } from 'twenty-ui/navigation';
import { GET_SETTINGS_OBJECT_TABLE_METADATA } from '~/pages/settings/data-model/constants/SettingsObjectTableMetadata';
import { SettingsObjectTableItem } from '~/pages/settings/data-model/types/SettingsObjectTableItem';
import { getSettingsPath } from '~/utils/navigation/getSettingsPath';
const StyledIconChevronRight = styled(IconChevronRight)`
color: ${({ theme }) => theme.font.color.tertiary};
@ -52,21 +52,23 @@ export const SettingsObjects = () => {
const { deleteOneObjectMetadataItem } = useDeleteOneObjectMetadataItem();
const { updateOneObjectMetadataItem } = useUpdateOneObjectMetadataItem();
const { activeObjectMetadataItems, inactiveObjectMetadataItems } =
useFilteredObjectMetadataItems();
const {
activeNonSystemObjectMetadataItems,
inactiveNonSystemObjectMetadataItems,
} = useFilteredObjectMetadataItems();
const { totalCountByObjectMetadataItemNamePlural } = useCombinedGetTotalCount(
{
objectMetadataItems: [
...activeObjectMetadataItems,
...inactiveObjectMetadataItems,
...activeNonSystemObjectMetadataItems,
...inactiveNonSystemObjectMetadataItems,
],
},
);
const activeObjectSettingsArray = useMemo(
() =>
activeObjectMetadataItems.map(
activeNonSystemObjectMetadataItems.map(
(objectMetadataItem) =>
({
objectMetadataItem,
@ -81,12 +83,15 @@ export const SettingsObjects = () => {
] ?? 0,
}) satisfies SettingsObjectTableItem,
),
[activeObjectMetadataItems, totalCountByObjectMetadataItemNamePlural],
[
activeNonSystemObjectMetadataItems,
totalCountByObjectMetadataItemNamePlural,
],
);
const inactiveObjectSettingsArray = useMemo(
() =>
inactiveObjectMetadataItems.map(
inactiveNonSystemObjectMetadataItems.map(
(objectMetadataItem) =>
({
objectMetadataItem,
@ -101,7 +106,10 @@ export const SettingsObjects = () => {
] ?? 0,
}) satisfies SettingsObjectTableItem,
),
[inactiveObjectMetadataItems, totalCountByObjectMetadataItemNamePlural],
[
inactiveNonSystemObjectMetadataItems,
totalCountByObjectMetadataItemNamePlural,
],
);
const sortedActiveObjectSettingsItems = useSortedArray(
@ -211,7 +219,7 @@ export const SettingsObjects = () => {
)}
</TableSection>
)}
{isNonEmptyArray(inactiveObjectMetadataItems) && (
{isNonEmptyArray(inactiveNonSystemObjectMetadataItems) && (
<TableSection title={t`Inactive`}>
{filteredInactiveObjectSettingsItems.map(
(objectSettingsItem) => (