diff --git a/packages/twenty-front/CLEANUP-REPORT.md b/packages/twenty-front/CLEANUP-REPORT.md new file mode 100644 index 00000000000..8a6aa6943c8 --- /dev/null +++ b/packages/twenty-front/CLEANUP-REPORT.md @@ -0,0 +1,169 @@ +# Twenty Frontend — Dead Code & Duplication Report + +## 1. Unused Code (safe to delete) + +### 1.1 Unused Hooks + +| Hook | File | Notes | +|------|------|-------| +| `useWorkflowRunUnsafe` | `modules/workflow/hooks/useWorkflowRunUnsafe.ts` | Never imported. Duplicate of `useWorkflowRun` without schema validation. | +| `useGetViewById` | `modules/views/hooks/useGetViewById.ts` | Never imported. `useViewById` is used instead. | +| `useCreateViewFieldGroup` | `modules/views/hooks/useCreateViewFieldGroup.ts` | Never imported. CRUD done via `usePerformViewFieldGroupAPIPersist`. | +| `useDeleteViewFieldGroup` | `modules/views/hooks/useDeleteViewFieldGroup.ts` | Same as above. | +| `useUpdateViewFieldGroup` | `modules/views/hooks/useUpdateViewFieldGroup.ts` | Same as above. | +| `useCreateManyViewFieldGroups` | `modules/views/hooks/useCreateManyViewFieldGroups.ts` | Same as above. | +| `useMoveViewColumns` | `modules/views/hooks/useMoveViewColumns.ts` | Only imported by its own test file — no production usage. | + +### 1.2 Unused Components + +| Component | File | Notes | +|-----------|------|-------| +| `SettingsSummaryCard` | `modules/settings/components/SettingsSummaryCard.tsx` | Never imported anywhere. | + +### 1.3 Unused Utilities + +| Export | File | Notes | +|--------|------|-------| +| `createEventContext` + `EventContext` | `utils/createEventContext.ts` | Entire file is unused — zero imports. | + +### 1.4 Filename Typo + +| File | Issue | +|------|-------| +| `modules/views/hooks/useOpenCreateViewDropown.ts` | "Dropown" should be "Dropdown". The exported hook is correctly named `useOpenCreateViewDropdown`. | + +--- + +## 2. Duplicated Logic + +### 2.1 Search/filter reimplementations — **Low effort, High impact** + +A central `filterBySearchQuery` utility exists in `utils/filterBySearchQuery.ts` with proper diacritic normalization, but several places reimplement search inline with plain `.toLowerCase().includes()`: + +| File | Inline pattern | +|------|----------------| +| `modules/workflow/workflow-trigger/components/WorkflowEditTriggerDatabaseEventForm.tsx` | `option.label.toLowerCase().includes(searchValue.toLowerCase())` | +| `modules/workflow/workflow-variables/hooks/useVariableDropdown.ts` | `value.label?.toLowerCase().includes(searchInputValue.toLowerCase())` | +| `modules/settings/roles/.../SettingsRolePermissionsObjectLevelRecordLevelPermissionMeValueSelect.tsx` | `item.label.toLowerCase().includes(searchInput.toLowerCase())` | +| `pages/settings/ai/components/SettingsAIModelsTab.tsx` | Multi-field inline search | + +**Fix:** Replace with `filterBySearchQuery` to get consistent diacritic-aware search for free. + +### 2.2 `SelectInput` vs `SubMatchingSelectInput` — **Medium effort, High impact** + +Both components in `modules/ui/input/components/SelectInput.tsx` and `modules/spreadsheet-import/.../SubMatchingSelectInput.tsx` have nearly identical logic: +- Same `optionsToSelect` memo with `normalizeSearchText` +- Same `optionsInDropDown` ordering (selected first) +- Same `handleOptionChange` pattern + +**Fix:** Extract a shared `useSelectWithSearch(options, selectedOption)` hook. + +### 2.3 `objectMetadataItemsState` + `.find()` — **Medium effort, High impact** + +45+ files read `objectMetadataItemsState` and then do `.find(item => item.nameSingular === ...)` or similar lookups. Selectors like `objectMetadataItemFamilySelector` and `objectMetadataItemsByNameSingularMapSelector` already exist but are underused. + +**Fix:** Introduce a `useObjectMetadataItemByName(name, 'singular' | 'plural')` hook and migrate call sites. + +### 2.4 Object metadata sorting — **Low effort, Medium impact** + +`a.labelSingular.localeCompare(b.labelSingular)` appears in 5+ places across hooks and utils. Same for `labelPlural`. + +**Fix:** Add a shared `sortObjectMetadataByLabel(key)` comparator. + +### 2.5 `objectMetadataItemsByNamePluralMapSelector` / `...SingularMapSelector` — **Low effort, Medium impact** + +These two selectors are identical except for the map key (`namePlural` vs `nameSingular`). + +**Fix:** Create a factory `createObjectMetadataItemsMapSelector(key)` and derive both from it. + +### 2.6 Chart dropdown components — **Medium effort, Medium impact** + +7 chart dropdown components share the same structure: `DropdownMenuSearchInput` + `filterBySearchQuery` + `DropdownMenuItemsContainer` + item rendering. + +Files: `ChartGroupByFieldSelectionDropdownContentBase`, `ChartDataSourceDropdownContent`, `ChartRatioOptionValueSelectionDropdownContent`, `ChartAggregateOperationSelectionDropdownContent`, `ChartColorSelectionDropdownContent`, `ChartFieldSelectionForAggregateOperationDropdownContent`, `ChartGroupByFieldSelectionRelationFieldView`. + +**Fix:** Extract a `ChartSettingsDropdown` wrapper that handles search + layout and accepts items via render prop. + +### 2.7 Settings table row components — **Low effort, Medium impact** + +6 settings table row components duplicate nearly identical styled components (`StyledNameContainer`, `StyledNameLabel`, `StyledInactiveLabel`): + +- `SettingsObjectItemTableRow` +- `SettingsObjectFieldItemTableRow` +- `SettingsObjectRelationItemTableRow` +- `SettingsRolePermissionsObjectLevelObjectFieldPermissionTableRow` +- `SettingsRolePermissionsObjectLevelTableRow` +- `SettingsRoleAssignmentTableRow` + +**Fix:** Extract shared styled components into `modules/settings/components/SettingsTableRowPrimitives.tsx`. + +### 2.8 Date formatting scattered across 5+ files — **High effort, Medium impact** + +Date utilities are spread across: +- `utils/date-utils.ts` +- `utils/format/formatDate.ts` +- `utils/string/formatDateString.ts` +- `utils/string/formatDateTimeString.ts` +- `utils/dates/formatZonedDateTimeDatePart.ts` / `formatZonedDateTimeTimePart.ts` + +**Fix:** Consolidate under `utils/dates/` with clear responsibilities (parse, format, relative display). + +--- + +## 3. Repeated Inline Patterns + +### 3.1 Text truncation CSS — ~50 occurrences + +```css +overflow: hidden; +text-overflow: ellipsis; +white-space: nowrap; +``` + +`EllipsisDisplay` exists in `modules/ui/field/display/components/EllipsisDisplay.tsx` but is rarely used. + +**Fix:** Add a `truncateTextMixin` in shared styles. Use it in styled components instead of repeating these 3 lines. + +### 3.2 Flex centering CSS — ~100+ occurrences + +```css +display: flex; +align-items: center; +/* optional: justify-content: center */ +``` + +**Fix:** Add `flexRowCenter` / `flexCenter` CSS mixins. + +### 3.3 `e.stopPropagation()` wrapper — ~40 occurrences + +`onClick={(e) => { e.stopPropagation(); ... }}` appears throughout. + +A `StopPropagationContainer` exists in `modules/object-record/record-board/record-board-card/components/` but is barely reused. + +**Fix:** Move `StopPropagationContainer` to a shared location and use it more broadly. Or add a `withStopPropagation(handler)` utility. + +--- + +## 4. Priority Matrix + +| # | Item | Effort | Impact | Type | +|---|------|--------|--------|------| +| 1 | Delete 7 unused hooks | **Very Low** | Medium | Dead code | +| 2 | Delete `SettingsSummaryCard` | **Very Low** | Low | Dead code | +| 3 | Delete `createEventContext.ts` | **Very Low** | Low | Dead code | +| 4 | Fix `useOpenCreateViewDropown` filename typo | **Very Low** | Low | Hygiene | +| 5 | Replace inline search filters with `filterBySearchQuery` | **Low** | High | Dedup | +| 6 | Add `truncateTextMixin` for ellipsis CSS | **Low** | High | Dedup | +| 7 | Extract shared settings table row styled components | **Low** | Medium | Dedup | +| 8 | Create `objectMetadataItemsMapSelector` factory | **Low** | Medium | Dedup | +| 9 | Add shared `sortObjectMetadataByLabel` comparator | **Low** | Medium | Dedup | +| 10 | Extract `useSelectWithSearch` from SelectInput/SubMatchingSelectInput | **Medium** | High | Dedup | +| 11 | Introduce `useObjectMetadataItemByName` hook | **Medium** | High | Dedup | +| 12 | Extract shared chart dropdown wrapper | **Medium** | Medium | Dedup | +| 13 | Consolidate date formatting utilities | **High** | Medium | Dedup | + +Items 1–4 are pure low-hanging fruit — just deletions and a rename, no risk of regressions. + +Items 5–9 are small refactors that pay off quickly across many files. + +Items 10–13 are larger but high-value unifications. diff --git a/packages/twenty-front/src/hooks/usePageChangeEffectNavigateLocation.ts b/packages/twenty-front/src/hooks/usePageChangeEffectNavigateLocation.ts index 27bcab76e38..601112e2ed3 100644 --- a/packages/twenty-front/src/hooks/usePageChangeEffectNavigateLocation.ts +++ b/packages/twenty-front/src/hooks/usePageChangeEffectNavigateLocation.ts @@ -6,7 +6,7 @@ import { returnToPathState } from '@/auth/states/returnToPathState'; import { calendarBookingPageIdState } from '@/client-config/states/calendarBookingPageIdState'; import { useIsCurrentLocationOnAWorkspace } from '@/domain-manager/hooks/useIsCurrentLocationOnAWorkspace'; import { useDefaultHomePagePath } from '@/navigation/hooks/useDefaultHomePagePath'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { useOnboardingStatus } from '@/onboarding/hooks/useOnboardingStatus'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { useIsWorkspaceActivationStatusEqualsTo } from '@/workspace/hooks/useIsWorkspaceActivationStatusEqualsTo'; @@ -40,7 +40,7 @@ export const usePageChangeEffectNavigateLocation = () => { appPaths.some((appPath) => isMatchingLocation(location, appPath)); const objectNamePlural = useParams().objectNamePlural ?? ''; - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const objectMetadataItem = objectMetadataItems?.find( (objectMetadataItem) => objectMetadataItem.namePlural === objectNamePlural, ); diff --git a/packages/twenty-front/src/modules/activities/hooks/useActivityTargetObjectRecords.ts b/packages/twenty-front/src/modules/activities/hooks/useActivityTargetObjectRecords.ts index 4c192c60faa..e5e383752a0 100644 --- a/packages/twenty-front/src/modules/activities/hooks/useActivityTargetObjectRecords.ts +++ b/packages/twenty-front/src/modules/activities/hooks/useActivityTargetObjectRecords.ts @@ -3,7 +3,7 @@ import { type NoteTarget } from '@/activities/types/NoteTarget'; import { type Task } from '@/activities/types/Task'; import { type TaskTarget } from '@/activities/types/TaskTarget'; import { getActivityTargetObjectRecords } from '@/activities/utils/getActivityTargetObjectRecords'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState'; import { useAtomFamilyStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomFamilyStateValue'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; @@ -14,7 +14,7 @@ export const useActivityTargetObjectRecords = ( activityRecordId?: string, activityTargets?: Nullable, ) => { - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const activity = useAtomFamilyStateValue( recordStoreFamilyState, diff --git a/packages/twenty-front/src/modules/activities/hooks/useActivityTargetsForTargetableObjects.ts b/packages/twenty-front/src/modules/activities/hooks/useActivityTargetsForTargetableObjects.ts index cae08902f39..2dc9ae53f4e 100644 --- a/packages/twenty-front/src/modules/activities/hooks/useActivityTargetsForTargetableObjects.ts +++ b/packages/twenty-front/src/modules/activities/hooks/useActivityTargetsForTargetableObjects.ts @@ -8,7 +8,7 @@ import { type ActivityTargetableObject } from '@/activities/types/ActivityTarget import { type NoteTarget } from '@/activities/types/NoteTarget'; import { type TaskTarget } from '@/activities/types/TaskTarget'; import { getActivityTargetsFilter } from '@/activities/utils/getActivityTargetsFilter'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; @@ -35,7 +35,7 @@ export const useActivityTargetsForTargetableObjects = ({ limit: number; }) => { const objectMetadataItems = useAtomStateValue( - objectMetadataItemsState, + objectMetadataItemsSelector, ); const isNoteTargetMigrated = useIsFeatureEnabled( FeatureFlagKey.IS_NOTE_TARGET_MIGRATED, diff --git a/packages/twenty-front/src/modules/activities/inline-cell/hooks/useOpenActivityTargetCellEditMode.ts b/packages/twenty-front/src/modules/activities/inline-cell/hooks/useOpenActivityTargetCellEditMode.ts index fbd9de0514a..a99a5538ede 100644 --- a/packages/twenty-front/src/modules/activities/inline-cell/hooks/useOpenActivityTargetCellEditMode.ts +++ b/packages/twenty-front/src/modules/activities/inline-cell/hooks/useOpenActivityTargetCellEditMode.ts @@ -1,5 +1,5 @@ import { type ActivityTargetWithTargetRecord } from '@/activities/types/ActivityTargetObject'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { CoreObjectNameSingular } from 'twenty-shared/types'; import { useMultipleRecordPickerOpen } from '@/object-record/record-picker/multiple-record-picker/hooks/useMultipleRecordPickerOpen'; import { useMultipleRecordPickerPerformSearch } from '@/object-record/record-picker/multiple-record-picker/hooks/useMultipleRecordPickerPerformSearch'; @@ -31,7 +31,7 @@ export const useOpenActivityTargetCellEditMode = () => { activityTargetObjectRecords, }: OpenActivityTargetCellEditModeProps) => { const objectMetadataItems = store - .get(objectMetadataItemsState.atom) + .get(objectMetadataItemsSelector.atom) .filter( (objectMetadataItem) => objectMetadataItem.isSearchable && diff --git a/packages/twenty-front/src/modules/activities/inline-cell/hooks/useUpdateActivityTargetFromCell.ts b/packages/twenty-front/src/modules/activities/inline-cell/hooks/useUpdateActivityTargetFromCell.ts index 4f4d11791ee..6ab741b6a06 100644 --- a/packages/twenty-front/src/modules/activities/inline-cell/hooks/useUpdateActivityTargetFromCell.ts +++ b/packages/twenty-front/src/modules/activities/inline-cell/hooks/useUpdateActivityTargetFromCell.ts @@ -3,7 +3,7 @@ import { type NoteTarget } from '@/activities/types/NoteTarget'; import { type TaskTarget } from '@/activities/types/TaskTarget'; import { getActivityTargetFieldNameForObject } from '@/activities/utils/getActivityTargetFieldNameForObject'; import { getJoinObjectNameSingular } from '@/activities/utils/getJoinObjectNameSingular'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { CoreObjectNameSingular } from 'twenty-shared/types'; import { useCreateOneRecord } from '@/object-record/hooks/useCreateOneRecord'; import { useDeleteOneRecord } from '@/object-record/hooks/useDeleteOneRecord'; @@ -81,7 +81,7 @@ export const useUpdateActivityTargetFromCell = ({ ? 'task' : 'note'; - const objectMetadataItems = store.get(objectMetadataItemsState.atom); + const objectMetadataItems = store.get(objectMetadataItemsSelector.atom); const pickedObjectMetadataItem = objectMetadataItems.find( (objectMetadataItem) => diff --git a/packages/twenty-front/src/modules/activities/timeline-activities/hooks/useLinkedObjectObjectMetadataItem.ts b/packages/twenty-front/src/modules/activities/timeline-activities/hooks/useLinkedObjectObjectMetadataItem.ts index b493089a6e8..49e9039077d 100644 --- a/packages/twenty-front/src/modules/activities/timeline-activities/hooks/useLinkedObjectObjectMetadataItem.ts +++ b/packages/twenty-front/src/modules/activities/timeline-activities/hooks/useLinkedObjectObjectMetadataItem.ts @@ -1,10 +1,10 @@ -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; export const useLinkedObjectObjectMetadataItem = (id: string | null) => { const objectMetadataItems: ObjectMetadataItem[] = useAtomStateValue( - objectMetadataItemsState, + objectMetadataItemsSelector, ); if (id === null) { diff --git a/packages/twenty-front/src/modules/ai/hooks/useBrowsingContext.ts b/packages/twenty-front/src/modules/ai/hooks/useBrowsingContext.ts index 89e8931053d..85c0de3b35a 100644 --- a/packages/twenty-front/src/modules/ai/hooks/useBrowsingContext.ts +++ b/packages/twenty-front/src/modules/ai/hooks/useBrowsingContext.ts @@ -10,7 +10,7 @@ import { contextStoreCurrentViewTypeComponentState } from '@/context-store/state import { contextStoreFiltersComponentState } from '@/context-store/states/contextStoreFiltersComponentState'; import { contextStoreTargetedRecordsRuleComponentState } from '@/context-store/states/contextStoreTargetedRecordsRuleComponentState'; import { ContextStoreViewType } from '@/context-store/types/ContextStoreViewType'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { recordStoreFamilySelector } from '@/object-record/record-store/states/selectors/recordStoreFamilySelector'; import { getTabListInstanceIdFromPageLayoutId } from '@/page-layout/utils/getTabListInstanceIdFromPageLayoutId'; import { activeTabIdComponentState } from '@/ui/layout/tab-list/states/activeTabIdComponentState'; @@ -35,7 +35,7 @@ export const useGetBrowsingContext = () => { }), ); - const objectMetadataItems = store.get(objectMetadataItemsState.atom); + const objectMetadataItems = store.get(objectMetadataItemsSelector.atom); const objectMetadataItem = objectMetadataItems.find( (item) => item.id === objectMetadataItemId, diff --git a/packages/twenty-front/src/modules/blocknote-editor/blocks/MentionInlineContent.tsx b/packages/twenty-front/src/modules/blocknote-editor/blocks/MentionInlineContent.tsx index 95f62a9377a..4889aba05cf 100644 --- a/packages/twenty-front/src/modules/blocknote-editor/blocks/MentionInlineContent.tsx +++ b/packages/twenty-front/src/modules/blocknote-editor/blocks/MentionInlineContent.tsx @@ -1,5 +1,5 @@ import { MentionRecordChip } from '@/mention/components/MentionRecordChip'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { RecordChip } from '@/object-record/components/RecordChip'; import { useFindOneRecord } from '@/object-record/hooks/useFindOneRecord'; import { createReactInlineContentSpec } from '@blocknote/react'; @@ -32,7 +32,7 @@ const LegacyMentionRenderer = ({ recordId: string; objectMetadataId: string; }) => { - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const objectMetadataItem = objectMetadataItems.find( (item) => item.id === objectMetadataId, diff --git a/packages/twenty-front/src/modules/command-menu-item/contexts/CommandMenuContextProviderLegacy.tsx b/packages/twenty-front/src/modules/command-menu-item/contexts/CommandMenuContextProviderLegacy.tsx index f5bb16c5e24..5cb4461709d 100644 --- a/packages/twenty-front/src/modules/command-menu-item/contexts/CommandMenuContextProviderLegacy.tsx +++ b/packages/twenty-front/src/modules/command-menu-item/contexts/CommandMenuContextProviderLegacy.tsx @@ -2,7 +2,7 @@ import { type CommandMenuContextType } from '@/command-menu-item/contexts/Comman import { CommandMenuContextProviderDefault } from '@/command-menu-item/contexts/CommandMenuContextProviderDefault'; import { CommandMenuContextProviderWorkflowObjects } from '@/command-menu-item/contexts/CommandMenuContextProviderWorkflowObjects'; import { contextStoreCurrentObjectMetadataItemIdComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemIdComponentState'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { CoreObjectNameSingular } from 'twenty-shared/types'; import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentStateValue'; @@ -23,7 +23,7 @@ export const CommandMenuContextProviderLegacy = ({ contextStoreCurrentObjectMetadataItemIdComponentState, ); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const objectMetadataItem = objectMetadataItemOverride ?? diff --git a/packages/twenty-front/src/modules/command-menu-item/server-items/hooks/useCommandMenuItemFrontComponentCommands.tsx b/packages/twenty-front/src/modules/command-menu-item/server-items/hooks/useCommandMenuItemFrontComponentCommands.tsx index f4bdf0fa156..6ee39c59090 100644 --- a/packages/twenty-front/src/modules/command-menu-item/server-items/hooks/useCommandMenuItemFrontComponentCommands.tsx +++ b/packages/twenty-front/src/modules/command-menu-item/server-items/hooks/useCommandMenuItemFrontComponentCommands.tsx @@ -7,7 +7,7 @@ import { contextStoreCurrentObjectMetadataItemIdComponentState } from '@/context import { contextStoreIsPageInEditModeComponentState } from '@/context-store/states/contextStoreIsPageInEditModeComponentState'; import { contextStoreTargetedRecordsRuleComponentState } from '@/context-store/states/contextStoreTargetedRecordsRuleComponentState'; import { useMountHeadlessFrontComponent } from '@/front-components/hooks/useMountHeadlessFrontComponent'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { useOpenFrontComponentInSidePanel } from '@/side-panel/hooks/useOpenFrontComponentInSidePanel'; import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentStateValue'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; @@ -180,7 +180,7 @@ export const useCommandMenuItemFrontComponentCommands = ( contextStoreTargetedRecordsRuleComponentState, ); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const currentObjectMetadataItem = objectMetadataItems.find( (item) => item.id === contextStoreCurrentObjectMetadataItemId, diff --git a/packages/twenty-front/src/modules/command-menu/components/__stories__/CommandMenu.stories.tsx b/packages/twenty-front/src/modules/command-menu/components/__stories__/CommandMenu.stories.tsx index d4b75364715..5b130135b3a 100644 --- a/packages/twenty-front/src/modules/command-menu/components/__stories__/CommandMenu.stories.tsx +++ b/packages/twenty-front/src/modules/command-menu/components/__stories__/CommandMenu.stories.tsx @@ -27,7 +27,7 @@ import { contextStoreCurrentObjectMetadataItemIdComponentState } from '@/context import { contextStoreCurrentViewTypeComponentState } from '@/context-store/states/contextStoreCurrentViewTypeComponentState'; import { ContextStoreComponentInstanceContext } from '@/context-store/states/contexts/ContextStoreComponentInstanceContext'; import { ContextStoreViewType } from '@/context-store/types/ContextStoreViewType'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { RecordComponentInstanceContextsWrapper } from '@/object-record/components/RecordComponentInstanceContextsWrapper'; import { SidePanelRouter } from '@/side-panel/components/SidePanelRouter'; import { SIDE_PANEL_COMPONENT_INSTANCE_ID } from '@/side-panel/constants/SidePanelComponentInstanceId'; @@ -102,7 +102,7 @@ const meta: Meta = { }, ]); - const objectMetadataItems = jotaiStore.get(objectMetadataItemsState.atom); + const objectMetadataItems = jotaiStore.get(objectMetadataItemsSelector.atom); const companyMetadataItem = objectMetadataItems.find( (item) => item.nameSingular === 'company', ); diff --git a/packages/twenty-front/src/modules/context-store/components/MainContextStoreProvider.tsx b/packages/twenty-front/src/modules/context-store/components/MainContextStoreProvider.tsx index c883094260c..f5c02512b5b 100644 --- a/packages/twenty-front/src/modules/context-store/components/MainContextStoreProvider.tsx +++ b/packages/twenty-front/src/modules/context-store/components/MainContextStoreProvider.tsx @@ -2,7 +2,7 @@ import { MainContextStoreProviderEffect } from '@/context-store/components/MainC import { metadataStoreState } from '@/metadata-store/states/metadataStoreState'; import { useIsSettingsPage } from '@/navigation/hooks/useIsSettingsPage'; import { useLastVisitedView } from '@/navigation/hooks/useLastVisitedView'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { useShowAuthModal } from '@/ui/layout/hooks/useShowAuthModal'; import { useAtomFamilyStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomFamilyStateValue'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; @@ -60,7 +60,7 @@ export const MainContextStoreProvider = () => { const [searchParams] = useSearchParams(); const viewIdQueryParamRaw = searchParams.get('viewId'); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const metadataStore = useAtomFamilyStateValue(metadataStoreState, 'views'); const views = useAtomStateValue(viewsSelector); diff --git a/packages/twenty-front/src/modules/context-store/hooks/useContextStoreObjectMetadataItem.ts b/packages/twenty-front/src/modules/context-store/hooks/useContextStoreObjectMetadataItem.ts index d94af2b809d..fb73660594b 100644 --- a/packages/twenty-front/src/modules/context-store/hooks/useContextStoreObjectMetadataItem.ts +++ b/packages/twenty-front/src/modules/context-store/hooks/useContextStoreObjectMetadataItem.ts @@ -1,5 +1,5 @@ import { contextStoreCurrentObjectMetadataItemIdComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemIdComponentState'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentStateValue'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; @@ -11,7 +11,7 @@ export const useContextStoreObjectMetadataItem = ( contextStoreInstanceId, ); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const objectMetadataItem = objectMetadataItems.find( (objectMetadataItemToFind) => diff --git a/packages/twenty-front/src/modules/context-store/hooks/useFindManyRecordsSelectedInContextStore.ts b/packages/twenty-front/src/modules/context-store/hooks/useFindManyRecordsSelectedInContextStore.ts index d099b1260f5..94b52f1e962 100644 --- a/packages/twenty-front/src/modules/context-store/hooks/useFindManyRecordsSelectedInContextStore.ts +++ b/packages/twenty-front/src/modules/context-store/hooks/useFindManyRecordsSelectedInContextStore.ts @@ -5,7 +5,7 @@ import { contextStoreFiltersComponentState } from '@/context-store/states/contex import { contextStoreTargetedRecordsRuleComponentState } from '@/context-store/states/contextStoreTargetedRecordsRuleComponentState'; import { computeContextStoreFilters } from '@/context-store/utils/computeContextStoreFilters'; import { useObjectMetadataItemById } from '@/object-metadata/hooks/useObjectMetadataItemById'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords'; import { useFilterValueDependencies } from '@/object-record/record-filter/hooks/useFilterValueDependencies'; import { RecordFilterOperand } from '@/object-record/record-filter/types/RecordFilterOperand'; @@ -50,7 +50,7 @@ export const useFindManyRecordsSelectedInContextStore = ({ const { filterValueDependencies } = useFilterValueDependencies(); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const allFieldMetadataItems = objectMetadataItems.flatMap( (objectMetadataItem) => objectMetadataItem.fields, diff --git a/packages/twenty-front/src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems.tsx b/packages/twenty-front/src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems.tsx index 3d834330852..e1a13e8f823 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/components/CurrentWorkspaceMemberNavigationMenuItems.tsx @@ -32,7 +32,7 @@ import { getNavigationMenuItemLabel } from '@/navigation-menu-item/utils/getNavi import { getNavigationMenuItemObjectNameSingular } from '@/navigation-menu-item/utils/getNavigationMenuItemObjectNameSingular'; import { getNavigationMenuItemSecondaryLabel } from '@/navigation-menu-item/utils/getNavigationMenuItemSecondaryLabel'; import { isLocationMatchingNavigationMenuItem } from '@/navigation-menu-item/utils/isLocationMatchingNavigationMenuItem'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { DraggableItem } from '@/ui/layout/draggable-list/components/DraggableItem'; import { useCloseDropdown } from '@/ui/layout/dropdown/hooks/useCloseDropdown'; import { isDropdownOpenComponentState } from '@/ui/layout/dropdown/states/isDropdownOpenComponentState'; @@ -69,7 +69,7 @@ export const CurrentWorkspaceMemberNavigationMenuItems = ({ isWorkspaceFolder = false, }: CurrentWorkspaceMemberNavigationMenuItemsProps) => { const { t } = useLingui(); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const views = useAtomStateValue(viewsSelector); const location = useLocation(); const navigate = useNavigate(); diff --git a/packages/twenty-front/src/modules/navigation-menu-item/components/CurrentWorkspaceMemberOrphanNavigationMenuItems.tsx b/packages/twenty-front/src/modules/navigation-menu-item/components/CurrentWorkspaceMemberOrphanNavigationMenuItems.tsx index c72d44f2f4e..e3d97937b10 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/components/CurrentWorkspaceMemberOrphanNavigationMenuItems.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/components/CurrentWorkspaceMemberOrphanNavigationMenuItems.tsx @@ -19,7 +19,7 @@ import { getNavigationMenuItemLabel } from '@/navigation-menu-item/utils/getNavi import { getNavigationMenuItemObjectNameSingular } from '@/navigation-menu-item/utils/getNavigationMenuItemObjectNameSingular'; import { getNavigationMenuItemSecondaryLabel } from '@/navigation-menu-item/utils/getNavigationMenuItemSecondaryLabel'; import { isLocationMatchingNavigationMenuItem } from '@/navigation-menu-item/utils/isLocationMatchingNavigationMenuItem'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { viewsSelector } from '@/views/states/selectors/viewsSelector'; import { DraggableItem } from '@/ui/layout/draggable-list/components/DraggableItem'; @@ -34,7 +34,7 @@ const StyledOrphanNavigationMenuItemsContainer = styled.div` `; export const CurrentWorkspaceMemberOrphanNavigationMenuItems = () => { - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const views = useAtomStateValue(viewsSelector); const { navigationMenuItemsSorted } = useSortedNavigationMenuItems(); const { deleteNavigationMenuItem } = useDeleteNavigationMenuItem(); diff --git a/packages/twenty-front/src/modules/navigation-menu-item/components/NavigationMenuItemFolderContent.tsx b/packages/twenty-front/src/modules/navigation-menu-item/components/NavigationMenuItemFolderContent.tsx index b0d6eefe559..5fdc3b3ef56 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/components/NavigationMenuItemFolderContent.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/components/NavigationMenuItemFolderContent.tsx @@ -10,7 +10,7 @@ import { getNavigationMenuItemComputedLink } from '@/navigation-menu-item/utils/ import { getNavigationMenuItemLabel } from '@/navigation-menu-item/utils/getNavigationMenuItemLabel'; import { getNavigationMenuItemObjectNameSingular } from '@/navigation-menu-item/utils/getNavigationMenuItemObjectNameSingular'; import { getNavigationMenuItemSecondaryLabel } from '@/navigation-menu-item/utils/getNavigationMenuItemSecondaryLabel'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { DraggableItem } from '@/ui/layout/draggable-list/components/DraggableItem'; import { NavigationDrawerItem } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerItem'; @@ -27,7 +27,7 @@ export const NavigationMenuItemFolderContent = ({ folderId, navigationMenuItems, }: NavigationMenuItemFolderContentProps) => { - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const views = useAtomStateValue(viewsSelector); const { deleteNavigationMenuItem } = useDeleteNavigationMenuItem(); diff --git a/packages/twenty-front/src/modules/navigation-menu-item/components/NavigationMenuItemIcon.tsx b/packages/twenty-front/src/modules/navigation-menu-item/components/NavigationMenuItemIcon.tsx index 81ed74d94ac..529cee54018 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/components/NavigationMenuItemIcon.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/components/NavigationMenuItemIcon.tsx @@ -16,7 +16,7 @@ import { getNavigationMenuItemLabel } from '@/navigation-menu-item/utils/getNavi import { getNavigationMenuItemObjectNameSingular } from '@/navigation-menu-item/utils/getNavigationMenuItemObjectNameSingular'; import { recordIdentifierToObjectRecordIdentifier } from '@/navigation-menu-item/utils/recordIdentifierToObjectRecordIdentifier'; import { useGetStandardObjectIcon } from '@/object-metadata/hooks/useGetStandardObjectIcon'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { viewsSelector } from '@/views/states/selectors/viewsSelector'; import { ViewKey } from '@/views/types/ViewKey'; @@ -27,7 +27,7 @@ export const NavigationMenuItemIcon = ({ navigationMenuItem: NavigationMenuItem; }) => { const { getIcon } = useIcons(); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const views = useAtomStateValue(viewsSelector); const objectNameSingular = diff --git a/packages/twenty-front/src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItemFolderDragClone.tsx b/packages/twenty-front/src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItemFolderDragClone.tsx index 9d857698aec..2b990cbcaac 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItemFolderDragClone.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItemFolderDragClone.tsx @@ -12,7 +12,7 @@ import { NavigationMenuItemIcon } from '@/navigation-menu-item/components/Naviga import { getNavigationMenuItemLabel } from '@/navigation-menu-item/utils/getNavigationMenuItemLabel'; import { getNavigationMenuItemObjectNameSingular } from '@/navigation-menu-item/utils/getNavigationMenuItemObjectNameSingular'; import { getNavigationMenuItemSecondaryLabel } from '@/navigation-menu-item/utils/getNavigationMenuItemSecondaryLabel'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { NavigationDrawerSubItem } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerSubItem'; import { getNavigationSubItemLeftAdornment } from '@/ui/navigation/navigation-drawer/utils/getNavigationSubItemLeftAdornment'; @@ -37,7 +37,7 @@ export const WorkspaceNavigationMenuItemFolderDragClone = ({ selectedNavigationMenuItemIndex, }: WorkspaceNavigationMenuItemFolderDragCloneProps) => { const { theme } = useContext(ThemeContext); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const views = useAtomStateValue(viewsSelector); const navigationMenuItem = navigationMenuItems[rubric.source.index]; diff --git a/packages/twenty-front/src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItemFolderSubItem.tsx b/packages/twenty-front/src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItemFolderSubItem.tsx index 07dc2be02c4..e77a1788028 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItemFolderSubItem.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItemFolderSubItem.tsx @@ -10,7 +10,7 @@ import { getNavigationMenuItemLabel } from '@/navigation-menu-item/utils/getNavi import { getNavigationMenuItemObjectNameSingular } from '@/navigation-menu-item/utils/getNavigationMenuItemObjectNameSingular'; import { getNavigationMenuItemSecondaryLabel } from '@/navigation-menu-item/utils/getNavigationMenuItemSecondaryLabel'; import { getObjectMetadataForNavigationMenuItem } from '@/navigation-menu-item/utils/getObjectMetadataForNavigationMenuItem'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { NavigationDrawerSubItem } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerSubItem'; import { getNavigationSubItemLeftAdornment } from '@/ui/navigation/navigation-drawer/utils/getNavigationSubItemLeftAdornment'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; @@ -39,7 +39,7 @@ export const WorkspaceNavigationMenuItemFolderSubItem = ({ const isNavigationMenuInEditMode = useAtomStateValue( isNavigationMenuInEditModeState, ); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const views = useAtomStateValue(viewsSelector); const objectMetadataItem = diff --git a/packages/twenty-front/src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItems.tsx b/packages/twenty-front/src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItems.tsx index 6185f50fb13..9a98ce87399 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItems.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/components/WorkspaceNavigationMenuItems.tsx @@ -29,7 +29,7 @@ import { getNavigationMenuItemComputedLink } from '@/navigation-menu-item/utils/ import { getNavigationMenuItemLabel } from '@/navigation-menu-item/utils/getNavigationMenuItemLabel'; import { preloadWorkspaceDndKit } from '@/navigation/preloadWorkspaceDndKit'; import { NavigationDrawerSectionForWorkspaceItems } from '@/object-metadata/components/NavigationDrawerSectionForWorkspaceItems'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { navigationMenuItemsSelector } from '@/navigation-menu-item/states/navigationMenuItemsSelector'; import { useNavigateSidePanel } from '@/side-panel/hooks/useNavigateSidePanel'; @@ -48,7 +48,7 @@ const StyledRightIconsContainer = styled.div` export const WorkspaceNavigationMenuItems = () => { const items = useWorkspaceSectionItems(); const { workspaceNavigationMenuItemsSorted } = useSortedNavigationMenuItems(); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const views = useAtomStateValue(viewsSelector); const store = useStore(); const enterEditMode = () => { diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useAddRecordToNavigationMenuDraft.ts b/packages/twenty-front/src/modules/navigation-menu-item/hooks/useAddRecordToNavigationMenuDraft.ts index 8ba30fc997c..2d8729fa23d 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useAddRecordToNavigationMenuDraft.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/hooks/useAddRecordToNavigationMenuDraft.ts @@ -4,7 +4,7 @@ import { isDefined } from 'twenty-shared/utils'; import type { NavigationMenuItem } from '~/generated-metadata/graphql'; import { navigationMenuItemsDraftState } from '@/navigation-menu-item/states/navigationMenuItemsDraftState'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { computeInsertIndexAndPosition } from '@/navigation-menu-item/utils/computeInsertIndexAndPosition'; @@ -24,7 +24,7 @@ export const useAddRecordToNavigationMenuDraft = () => { const setNavigationMenuItemsDraft = useSetAtomState( navigationMenuItemsDraftState, ); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const addRecordToDraft = ( searchRecord: SearchRecordWithOptionalMetadataId, diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useCreateNavigationMenuItem.ts b/packages/twenty-front/src/modules/navigation-menu-item/hooks/useCreateNavigationMenuItem.ts index 325db37752b..5f2719349fe 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useCreateNavigationMenuItem.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/hooks/useCreateNavigationMenuItem.ts @@ -4,14 +4,14 @@ import { useMutation } from '@apollo/client/react'; import { CreateNavigationMenuItemDocument } from '~/generated-metadata/graphql'; import { useNavigationMenuItemsData } from '@/navigation-menu-item/hooks/useNavigationMenuItemsData'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { type ObjectRecord } from '@/object-record/types/ObjectRecord'; export const useCreateNavigationMenuItem = () => { const { navigationMenuItems, currentWorkspaceMemberId } = useNavigationMenuItemsData(); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const [createNavigationMenuItemMutation] = useMutation( CreateNavigationMenuItemDocument, diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useNavigationMenuItemsByFolder.ts b/packages/twenty-front/src/modules/navigation-menu-item/hooks/useNavigationMenuItemsByFolder.ts index ae5f3495aa3..e9ea5273fe8 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useNavigationMenuItemsByFolder.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/hooks/useNavigationMenuItemsByFolder.ts @@ -3,7 +3,7 @@ import { type NavigationMenuItem } from '~/generated-metadata/graphql'; import { filterAndSortNavigationMenuItems } from '@/navigation-menu-item/utils/filterAndSortNavigationMenuItems'; import { isNavigationMenuItemFolder } from '@/navigation-menu-item/utils/isNavigationMenuItemFolder'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { viewsSelector } from '@/views/states/selectors/viewsSelector'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; @@ -24,7 +24,7 @@ type NavigationMenuItemFolderEntry = Pick< export const useNavigationMenuItemsByFolder = () => { const views = useAtomStateValue(viewsSelector); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const { navigationMenuItems, workspaceNavigationMenuItems } = useNavigationMenuItemsData(); diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useSaveNavigationMenuItemsDraft.ts b/packages/twenty-front/src/modules/navigation-menu-item/hooks/useSaveNavigationMenuItemsDraft.ts index 2255098aedd..8135a115527 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useSaveNavigationMenuItemsDraft.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/hooks/useSaveNavigationMenuItemsDraft.ts @@ -15,7 +15,7 @@ import { isNavigationMenuItemLink } from '@/navigation-menu-item/utils/isNavigat import { orderFoldersForCreation } from '@/navigation-menu-item/utils/orderFoldersForCreation'; import { navigationMenuItemsSelector } from '@/navigation-menu-item/states/navigationMenuItemsSelector'; import { useUpdateOneObjectMetadataItem } from '@/object-metadata/hooks/useUpdateOneObjectMetadataItem'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { useStore } from 'jotai'; export const useSaveNavigationMenuItemsDraft = () => { @@ -37,7 +37,7 @@ export const useSaveNavigationMenuItemsDraft = () => { if (!draft) return; - const objectMetadataItems = store.get(objectMetadataItemsState.atom); + const objectMetadataItems = store.get(objectMetadataItemsSelector.atom); for (const draftItem of draft) { if (draftItem.type !== NavigationMenuItemType.OBJECT) { diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useSelectedNavigationMenuItemEditItemLabel.ts b/packages/twenty-front/src/modules/navigation-menu-item/hooks/useSelectedNavigationMenuItemEditItemLabel.ts index 9b332f77708..d70b3bbc9d0 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useSelectedNavigationMenuItemEditItemLabel.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/hooks/useSelectedNavigationMenuItemEditItemLabel.ts @@ -4,7 +4,7 @@ import { type NavigationMenuItem } from '~/generated-metadata/graphql'; import { getNavigationMenuItemLabel } from '@/navigation-menu-item/utils/getNavigationMenuItemLabel'; import { useSelectedNavigationMenuItemEditItem } from '@/navigation-menu-item/hooks/useSelectedNavigationMenuItemEditItem'; import { useSelectedNavigationMenuItemEditItemObjectMetadata } from '@/navigation-menu-item/hooks/useSelectedNavigationMenuItemEditItemObjectMetadata'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { viewsSelector } from '@/views/states/selectors/viewsSelector'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; @@ -35,7 +35,7 @@ export const useSelectedNavigationMenuItemEditItemLabel = () => { const { selectedItem } = useSelectedNavigationMenuItemEditItem(); const { selectedItemObjectMetadata } = useSelectedNavigationMenuItemEditItemObjectMetadata(); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const views = useAtomStateValue(viewsSelector); const selectedItemLabel = selectedItem diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useSortedNavigationMenuItems.ts b/packages/twenty-front/src/modules/navigation-menu-item/hooks/useSortedNavigationMenuItems.ts index 5f00fa6d331..38844894313 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useSortedNavigationMenuItems.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/hooks/useSortedNavigationMenuItems.ts @@ -1,7 +1,7 @@ import { useMemo } from 'react'; import { filterAndSortNavigationMenuItems } from '@/navigation-menu-item/utils/filterAndSortNavigationMenuItems'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { viewsSelector } from '@/views/states/selectors/viewsSelector'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; @@ -11,7 +11,7 @@ export const useSortedNavigationMenuItems = () => { const { navigationMenuItems, workspaceNavigationMenuItems } = useNavigationMenuItemsData(); const views = useAtomStateValue(viewsSelector); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const navigationMenuItemsSorted = useMemo(() => { return filterAndSortNavigationMenuItems( diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useWorkspaceFolderOpenState.ts b/packages/twenty-front/src/modules/navigation-menu-item/hooks/useWorkspaceFolderOpenState.ts index 8add083ab97..cc8be664924 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useWorkspaceFolderOpenState.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/hooks/useWorkspaceFolderOpenState.ts @@ -8,7 +8,7 @@ import { type NavigationMenuItem } from '~/generated-metadata/graphql'; import { openNavigationMenuItemFolderIdsState } from '@/navigation-menu-item/states/openNavigationMenuItemFolderIdsState'; import { getNavigationMenuItemComputedLink } from '@/navigation-menu-item/utils/getNavigationMenuItemComputedLink'; import { isLocationMatchingNavigationMenuItem } from '@/navigation-menu-item/utils/isLocationMatchingNavigationMenuItem'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { currentNavigationMenuItemFolderIdState } from '@/ui/navigation/navigation-drawer/states/currentNavigationMenuItemFolderIdState'; import { useAtomState } from '@/ui/utilities/state/jotai/hooks/useAtomState'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; @@ -29,7 +29,7 @@ export const useWorkspaceFolderOpenState = ({ const currentPath = location.pathname; const currentViewPath = location.pathname + location.search; const isMobile = useIsMobile(); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const views = useAtomStateValue(viewsSelector); const [openNavigationMenuItemFolderIds, setOpenNavigationMenuItemFolderIds] = diff --git a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useWorkspaceSectionItems.ts b/packages/twenty-front/src/modules/navigation-menu-item/hooks/useWorkspaceSectionItems.ts index 9bc6a062c30..07398c975ca 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/hooks/useWorkspaceSectionItems.ts +++ b/packages/twenty-front/src/modules/navigation-menu-item/hooks/useWorkspaceSectionItems.ts @@ -5,7 +5,7 @@ import { NavigationMenuItemType } from 'twenty-shared/types'; import { getObjectMetadataForNavigationMenuItem } from '@/navigation-menu-item/utils/getObjectMetadataForNavigationMenuItem'; import { isNavigationMenuItemFolder } from '@/navigation-menu-item/utils/isNavigationMenuItemFolder'; import { getObjectPermissionsForObject } from '@/object-metadata/utils/getObjectPermissionsForObject'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { useObjectPermissions } from '@/object-record/hooks/useObjectPermissions'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; @@ -27,7 +27,7 @@ export const useWorkspaceSectionItems = (): NavigationMenuItem[] => { const { workspaceNavigationMenuItemsByFolder } = useNavigationMenuItemsByFolder(); const views = useAtomStateValue(viewsSelector); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const { objectPermissionsByObjectMetadataId } = useObjectPermissions(); const flatWorkspaceItems = workspaceNavigationMenuItems diff --git a/packages/twenty-front/src/modules/navigation/hooks/useSetLastVisitedObjectMetadataId.ts b/packages/twenty-front/src/modules/navigation/hooks/useSetLastVisitedObjectMetadataId.ts index 91051ceebc9..23e3f8c6256 100644 --- a/packages/twenty-front/src/modules/navigation/hooks/useSetLastVisitedObjectMetadataId.ts +++ b/packages/twenty-front/src/modules/navigation/hooks/useSetLastVisitedObjectMetadataId.ts @@ -1,5 +1,5 @@ import { lastVisitedObjectMetadataItemIdState } from '@/navigation/states/lastVisitedObjectMetadataItemIdState'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { useCallback } from 'react'; import { isDefined } from 'twenty-shared/utils'; import { useStore } from 'jotai'; @@ -8,7 +8,7 @@ export const useSetLastVisitedObjectMetadataId = () => { const store = useStore(); const setLastVisitedObjectMetadataId = useCallback( ({ objectMetadataItemId }: { objectMetadataItemId: string }) => { - const objectMetadataItems = store.get(objectMetadataItemsState.atom); + const objectMetadataItems = store.get(objectMetadataItemsSelector.atom); const objectMetadataItem = objectMetadataItems.find( (item) => item.id === objectMetadataItemId, diff --git a/packages/twenty-front/src/modules/navigation/hooks/useSetLastVisitedViewForObjectMetadataNamePlural.ts b/packages/twenty-front/src/modules/navigation/hooks/useSetLastVisitedViewForObjectMetadataNamePlural.ts index 0f8b0967464..c65b73c600c 100644 --- a/packages/twenty-front/src/modules/navigation/hooks/useSetLastVisitedViewForObjectMetadataNamePlural.ts +++ b/packages/twenty-front/src/modules/navigation/hooks/useSetLastVisitedViewForObjectMetadataNamePlural.ts @@ -1,5 +1,5 @@ import { lastVisitedViewPerObjectMetadataItemState } from '@/navigation/states/lastVisitedViewPerObjectMetadataItemState'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { viewsSelector } from '@/views/states/selectors/viewsSelector'; import { type ViewWithRelations } from '@/views/types/ViewWithRelations'; import { useCallback } from 'react'; @@ -20,7 +20,7 @@ export const useSetLastVisitedViewForObjectMetadataNamePlural = () => { const view = views.find((view: ViewWithRelations) => view.id === viewId); - const objectMetadataItems = store.get(objectMetadataItemsState.atom); + const objectMetadataItems = store.get(objectMetadataItemsSelector.atom); const objectMetadataItem = objectMetadataItems.find( (item) => item.namePlural === objectNamePlural, diff --git a/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerItemForObjectMetadataItem.tsx b/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerItemForObjectMetadataItem.tsx index 690f32ecc6f..4c275586515 100644 --- a/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerItemForObjectMetadataItem.tsx +++ b/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerItemForObjectMetadataItem.tsx @@ -5,7 +5,7 @@ import { getNavigationMenuItemComputedLink } from '@/navigation-menu-item/utils/ import { getNavigationMenuItemLabel } from '@/navigation-menu-item/utils/getNavigationMenuItemLabel'; import { recordIdentifierToObjectRecordIdentifier } from '@/navigation-menu-item/utils/recordIdentifierToObjectRecordIdentifier'; import { lastVisitedViewPerObjectMetadataItemState } from '@/navigation/states/lastVisitedViewPerObjectMetadataItemState'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { NavigationDrawerItem } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerItem'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; @@ -44,7 +44,7 @@ export const NavigationDrawerItemForObjectMetadataItem = ({ const lastVisitedViewPerObjectMetadataItem = useAtomStateValue( lastVisitedViewPerObjectMetadataItemState, ); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const views = useAtomStateValue(viewsSelector); const lastVisitedViewId = diff --git a/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForWorkspaceItemLinkContent.tsx b/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForWorkspaceItemLinkContent.tsx index 479e0860a55..3544b919919 100644 --- a/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForWorkspaceItemLinkContent.tsx +++ b/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForWorkspaceItemLinkContent.tsx @@ -2,7 +2,7 @@ import { NavigationMenuItemIcon } from '@/navigation-menu-item/components/Naviga import { isNavigationMenuInEditModeState } from '@/navigation-menu-item/states/isNavigationMenuInEditModeState'; import { getNavigationMenuItemComputedLink } from '@/navigation-menu-item/utils/getNavigationMenuItemComputedLink'; import { getNavigationMenuItemLabel } from '@/navigation-menu-item/utils/getNavigationMenuItemLabel'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import type { WorkspaceSectionItemContentProps } from '@/object-metadata/components/WorkspaceSectionItemContentProps'; import { NavigationDrawerItem } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerItem'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; @@ -21,7 +21,7 @@ export const NavigationDrawerSectionForWorkspaceItemLinkContent = ({ const isNavigationMenuInEditMode = useAtomStateValue( isNavigationMenuInEditModeState, ); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const views = useAtomStateValue(viewsSelector); const label = getNavigationMenuItemLabel(item, objectMetadataItems, views); diff --git a/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForWorkspaceItemObjectContent.tsx b/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForWorkspaceItemObjectContent.tsx index e488acaf4e7..4a3ccd6a18b 100644 --- a/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForWorkspaceItemObjectContent.tsx +++ b/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForWorkspaceItemObjectContent.tsx @@ -1,7 +1,7 @@ import { getObjectMetadataForNavigationMenuItem } from '@/navigation-menu-item/utils/getObjectMetadataForNavigationMenuItem'; import { NavigationDrawerItemForObjectMetadataItem } from '@/object-metadata/components/NavigationDrawerItemForObjectMetadataItem'; import type { WorkspaceSectionItemContentProps } from '@/object-metadata/components/WorkspaceSectionItemContentProps'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { viewsSelector } from '@/views/states/selectors/viewsSelector'; @@ -14,7 +14,7 @@ export const NavigationDrawerSectionForWorkspaceItemObjectContent = ({ isDragging, onActiveObjectMetadataItemClick, }: NavigationDrawerSectionForWorkspaceItemObjectContentProps) => { - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const views = useAtomStateValue(viewsSelector); const objectMetadataItem = getObjectMetadataForNavigationMenuItem( item, diff --git a/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForWorkspaceItems.tsx b/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForWorkspaceItems.tsx index 7b11d8c9277..c606a7929a8 100644 --- a/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForWorkspaceItems.tsx +++ b/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForWorkspaceItems.tsx @@ -12,7 +12,7 @@ import { getObjectMetadataForNavigationMenuItem } from '@/navigation-menu-item/u import type { EditModeProps } from '@/object-metadata/components/EditModeProps'; import { NavigationDrawerSectionForWorkspaceItemsListReadOnly } from '@/object-metadata/components/NavigationDrawerSectionForWorkspaceItemsListReadOnly'; import { WorkspaceSectionListEditModeFallback } from '@/object-metadata/components/WorkspaceSectionListEditModeFallback'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { getObjectPermissionsForObject } from '@/object-metadata/utils/getObjectPermissionsForObject'; import { useObjectPermissions } from '@/object-record/hooks/useObjectPermissions'; @@ -63,7 +63,7 @@ export const NavigationDrawerSectionForWorkspaceItems = ({ const views = useAtomStateValue(viewsSelector); const { objectPermissionsByObjectMetadataId } = useObjectPermissions(); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const { addToNavigationFallbackDestination } = useContext( NavigationDropTargetContext, ); diff --git a/packages/twenty-front/src/modules/object-metadata/components/PreComputedChipGeneratorsProvider.tsx b/packages/twenty-front/src/modules/object-metadata/components/PreComputedChipGeneratorsProvider.tsx index 9a59be00b37..5ac6fc096cb 100644 --- a/packages/twenty-front/src/modules/object-metadata/components/PreComputedChipGeneratorsProvider.tsx +++ b/packages/twenty-front/src/modules/object-metadata/components/PreComputedChipGeneratorsProvider.tsx @@ -3,13 +3,13 @@ import React, { useMemo } from 'react'; import { allowRequestsToTwentyIconsState } from '@/client-config/states/allowRequestsToTwentyIcons'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { PreComputedChipGeneratorsContext } from '@/object-metadata/contexts/PreComputedChipGeneratorsContext'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { getRecordChipGenerators } from '@/object-record/utils/getRecordChipGenerators'; export const PreComputedChipGeneratorsProvider = ({ children, }: React.PropsWithChildren) => { - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const allowRequestsToTwentyIcons = useAtomStateValue( allowRequestsToTwentyIconsState, ); diff --git a/packages/twenty-front/src/modules/object-metadata/hooks/useFieldMetadataItemById.ts b/packages/twenty-front/src/modules/object-metadata/hooks/useFieldMetadataItemById.ts index 6219b873bad..f37b0dd92e9 100644 --- a/packages/twenty-front/src/modules/object-metadata/hooks/useFieldMetadataItemById.ts +++ b/packages/twenty-front/src/modules/object-metadata/hooks/useFieldMetadataItemById.ts @@ -1,9 +1,9 @@ -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { getFieldMetadataItemById } from '@/object-metadata/utils/getFieldMetadataItemById'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; export const useFieldMetadataItemById = (fieldMetadataId: string) => { - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); return getFieldMetadataItemById({ fieldMetadataId, diff --git a/packages/twenty-front/src/modules/object-metadata/hooks/useFieldMetadataItemByIdOrThrow.ts b/packages/twenty-front/src/modules/object-metadata/hooks/useFieldMetadataItemByIdOrThrow.ts index 9a67e99d434..73f4a39295c 100644 --- a/packages/twenty-front/src/modules/object-metadata/hooks/useFieldMetadataItemByIdOrThrow.ts +++ b/packages/twenty-front/src/modules/object-metadata/hooks/useFieldMetadataItemByIdOrThrow.ts @@ -1,9 +1,9 @@ -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { getFieldMetadataItemByIdOrThrow } from '@/object-metadata/utils/getFieldMetadataItemByIdOrThrow'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; export const useFieldMetadataItemByIdOrThrow = (fieldMetadataId: string) => { - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); return getFieldMetadataItemByIdOrThrow({ fieldMetadataId, diff --git a/packages/twenty-front/src/modules/object-metadata/hooks/useGetFieldMetadataItemById.ts b/packages/twenty-front/src/modules/object-metadata/hooks/useGetFieldMetadataItemById.ts index d6c22b64f95..472ef8c1054 100644 --- a/packages/twenty-front/src/modules/object-metadata/hooks/useGetFieldMetadataItemById.ts +++ b/packages/twenty-front/src/modules/object-metadata/hooks/useGetFieldMetadataItemById.ts @@ -1,6 +1,6 @@ import { useCallback } from 'react'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { getFieldMetadataItemByIdOrThrow } from '@/object-metadata/utils/getFieldMetadataItemByIdOrThrow'; @@ -15,7 +15,7 @@ export const useGetFieldMetadataItemByIdOrThrow = () => { const store = useStore(); const getFieldMetadataItemByIdOrThrowCallback = useCallback( (fieldMetadataId: string): GetFieldMetadataItemByIdOrThrowResult => { - const objectMetadataItems = store.get(objectMetadataItemsState.atom); + const objectMetadataItems = store.get(objectMetadataItemsSelector.atom); return getFieldMetadataItemByIdOrThrow({ fieldMetadataId, diff --git a/packages/twenty-front/src/modules/object-metadata/hooks/useGetObjectMetadataItemById.ts b/packages/twenty-front/src/modules/object-metadata/hooks/useGetObjectMetadataItemById.ts index 32d26dc842a..cf6f815dc56 100644 --- a/packages/twenty-front/src/modules/object-metadata/hooks/useGetObjectMetadataItemById.ts +++ b/packages/twenty-front/src/modules/object-metadata/hooks/useGetObjectMetadataItemById.ts @@ -1,9 +1,9 @@ -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { CustomError, isDefined } from 'twenty-shared/utils'; export const useGetObjectMetadataItemById = () => { - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const getObjectMetadataItemById = (objectId: string) => { const objectMetadataItem = objectMetadataItems.find( diff --git a/packages/twenty-front/src/modules/object-metadata/hooks/useGetObjectRecordIdentifierByNameSingular.ts b/packages/twenty-front/src/modules/object-metadata/hooks/useGetObjectRecordIdentifierByNameSingular.ts index e5860929d48..c015b9d422b 100644 --- a/packages/twenty-front/src/modules/object-metadata/hooks/useGetObjectRecordIdentifierByNameSingular.ts +++ b/packages/twenty-front/src/modules/object-metadata/hooks/useGetObjectRecordIdentifierByNameSingular.ts @@ -1,4 +1,4 @@ -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { getObjectRecordIdentifier } from '@/object-metadata/utils/getObjectRecordIdentifier'; import { type ObjectRecordIdentifier } from '@/object-record/types/ObjectRecordIdentifier'; @@ -6,7 +6,7 @@ import { type ObjectRecordIdentifier } from '@/object-record/types/ObjectRecordI export const useGetObjectRecordIdentifierByNameSingular = ( allowRequestsToTwentyIcons: boolean, ) => { - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); return (record: any, objectNameSingular: string): ObjectRecordIdentifier => { const objectMetadataItem = objectMetadataItems.find( diff --git a/packages/twenty-front/src/modules/object-metadata/hooks/useObjectMetadataItemById.ts b/packages/twenty-front/src/modules/object-metadata/hooks/useObjectMetadataItemById.ts index 11d48680159..9068c23393a 100644 --- a/packages/twenty-front/src/modules/object-metadata/hooks/useObjectMetadataItemById.ts +++ b/packages/twenty-front/src/modules/object-metadata/hooks/useObjectMetadataItemById.ts @@ -1,4 +1,4 @@ -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { CustomError, isDefined } from 'twenty-shared/utils'; @@ -7,7 +7,7 @@ export const useObjectMetadataItemById = ({ }: { objectId: string; }) => { - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const objectMetadataItem = objectMetadataItems.find( (objectMetadataItem) => objectMetadataItem.id === objectId, diff --git a/packages/twenty-front/src/modules/object-metadata/states/objectMetadataItemsState.ts b/packages/twenty-front/src/modules/object-metadata/states/objectMetadataItemsSelector.ts similarity index 79% rename from packages/twenty-front/src/modules/object-metadata/states/objectMetadataItemsState.ts rename to packages/twenty-front/src/modules/object-metadata/states/objectMetadataItemsSelector.ts index 1c77d115a85..3bd95f3d5d5 100644 --- a/packages/twenty-front/src/modules/object-metadata/states/objectMetadataItemsState.ts +++ b/packages/twenty-front/src/modules/object-metadata/states/objectMetadataItemsSelector.ts @@ -2,9 +2,9 @@ import { objectMetadataItemsWithFieldsSelector } from '@/object-metadata/states/ import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { createAtomSelector } from '@/ui/utilities/state/jotai/utils/createAtomSelector'; -export const objectMetadataItemsState = createAtomSelector< +export const objectMetadataItemsSelector = createAtomSelector< ObjectMetadataItem[] >({ - key: 'objectMetadataItemsState', + key: 'objectMetadataItemsSelector', get: ({ get }) => get(objectMetadataItemsWithFieldsSelector), }); diff --git a/packages/twenty-front/src/modules/object-record/cache/hooks/useUpsertFindManyRecordsQueryInCache.ts b/packages/twenty-front/src/modules/object-record/cache/hooks/useUpsertFindManyRecordsQueryInCache.ts index bfd6b5c61a8..8d7dc7d9704 100644 --- a/packages/twenty-front/src/modules/object-record/cache/hooks/useUpsertFindManyRecordsQueryInCache.ts +++ b/packages/twenty-front/src/modules/object-record/cache/hooks/useUpsertFindManyRecordsQueryInCache.ts @@ -1,5 +1,5 @@ import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { getRecordConnectionFromRecords } from '@/object-record/cache/utils/getRecordConnectionFromRecords'; @@ -15,7 +15,7 @@ export const useUpsertFindManyRecordsQueryInCache = ({ }) => { const apolloCoreClient = useApolloCoreClient(); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const { objectPermissionsByObjectMetadataId } = useObjectPermissions(); const upsertFindManyRecordsQueryInCache = < diff --git a/packages/twenty-front/src/modules/object-record/hooks/useCreateManyRecordsMutation.ts b/packages/twenty-front/src/modules/object-record/hooks/useCreateManyRecordsMutation.ts index 92a5c7b2a75..97fba15dfad 100644 --- a/packages/twenty-front/src/modules/object-record/hooks/useCreateManyRecordsMutation.ts +++ b/packages/twenty-front/src/modules/object-record/hooks/useCreateManyRecordsMutation.ts @@ -1,7 +1,7 @@ import gql from 'graphql-tag'; import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { mapObjectMetadataToGraphQLQuery } from '@/object-metadata/utils/mapObjectMetadataToGraphQLQuery'; import { EMPTY_MUTATION } from '@/object-record/constants/EmptyMutation'; @@ -24,7 +24,7 @@ export const useCreateManyRecordsMutation = ({ const { objectPermissionsByObjectMetadataId } = useObjectPermissions(); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); if (isUndefinedOrNull(objectMetadataItem)) { return { createManyRecordsMutation: EMPTY_MUTATION }; diff --git a/packages/twenty-front/src/modules/object-record/hooks/useCreateOneRecordMutation.ts b/packages/twenty-front/src/modules/object-record/hooks/useCreateOneRecordMutation.ts index 2a7d39096d6..8f88c2ea13c 100644 --- a/packages/twenty-front/src/modules/object-record/hooks/useCreateOneRecordMutation.ts +++ b/packages/twenty-front/src/modules/object-record/hooks/useCreateOneRecordMutation.ts @@ -1,5 +1,5 @@ import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { generateCreateOneRecordMutation } from '@/object-metadata/utils/generateCreateOneRecordMutation'; import { EMPTY_MUTATION } from '@/object-record/constants/EmptyMutation'; @@ -18,7 +18,7 @@ export const useCreateOneRecordMutation = ({ objectNameSingular, }); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const { objectPermissionsByObjectMetadataId } = useObjectPermissions(); diff --git a/packages/twenty-front/src/modules/object-record/hooks/useFindDuplicatesRecordsQuery.ts b/packages/twenty-front/src/modules/object-record/hooks/useFindDuplicatesRecordsQuery.ts index fd3697718b8..179edf6aab7 100644 --- a/packages/twenty-front/src/modules/object-record/hooks/useFindDuplicatesRecordsQuery.ts +++ b/packages/twenty-front/src/modules/object-record/hooks/useFindDuplicatesRecordsQuery.ts @@ -2,7 +2,7 @@ import gql from 'graphql-tag'; import { useMemo } from 'react'; import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { isAggregationEnabled } from '@/object-metadata/utils/isAggregationEnabled'; import { mapObjectMetadataToGraphQLQuery } from '@/object-metadata/utils/mapObjectMetadataToGraphQLQuery'; @@ -21,7 +21,7 @@ export const useFindDuplicateRecordsQuery = ({ const { objectPermissionsByObjectMetadataId } = useObjectPermissions(); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const findDuplicateRecordsQuery = useMemo( () => gql` diff --git a/packages/twenty-front/src/modules/object-record/hooks/useFindManyRecordsQuery.ts b/packages/twenty-front/src/modules/object-record/hooks/useFindManyRecordsQuery.ts index 92452b09140..6297a60ec71 100644 --- a/packages/twenty-front/src/modules/object-record/hooks/useFindManyRecordsQuery.ts +++ b/packages/twenty-front/src/modules/object-record/hooks/useFindManyRecordsQuery.ts @@ -1,7 +1,7 @@ import { useMemo } from 'react'; import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { useObjectPermissions } from '@/object-record/hooks/useObjectPermissions'; import { generateFindManyRecordsQuery } from '@/object-record/utils/generateFindManyRecordsQuery'; @@ -25,7 +25,7 @@ export const useFindManyRecordsQuery = ({ objectNameSingular, }); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const { objectPermissionsByObjectMetadataId } = useObjectPermissions(); diff --git a/packages/twenty-front/src/modules/object-record/hooks/useFindOneRecordQuery.ts b/packages/twenty-front/src/modules/object-record/hooks/useFindOneRecordQuery.ts index fd341d82262..ded90daf129 100644 --- a/packages/twenty-front/src/modules/object-record/hooks/useFindOneRecordQuery.ts +++ b/packages/twenty-front/src/modules/object-record/hooks/useFindOneRecordQuery.ts @@ -2,7 +2,7 @@ import gql from 'graphql-tag'; import { useMemo } from 'react'; import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { mapObjectMetadataToGraphQLQuery } from '@/object-metadata/utils/mapObjectMetadataToGraphQLQuery'; import { type RecordGqlOperationGqlRecordFields } from 'twenty-shared/types'; @@ -22,7 +22,7 @@ export const useFindOneRecordQuery = ({ objectNameSingular, }); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const { objectPermissionsByObjectMetadataId } = useObjectPermissions(); diff --git a/packages/twenty-front/src/modules/object-record/hooks/useGroupByRecordsQuery.ts b/packages/twenty-front/src/modules/object-record/hooks/useGroupByRecordsQuery.ts index bcf9f61f155..72a7e65f82d 100644 --- a/packages/twenty-front/src/modules/object-record/hooks/useGroupByRecordsQuery.ts +++ b/packages/twenty-front/src/modules/object-record/hooks/useGroupByRecordsQuery.ts @@ -1,7 +1,7 @@ import { useMemo } from 'react'; import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { type RecordGqlOperationGqlRecordFields } from 'twenty-shared/types'; import { useObjectPermissions } from '@/object-record/hooks/useObjectPermissions'; @@ -20,7 +20,7 @@ export const useGroupByRecordsQuery = ({ objectNameSingular, }); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const { objectPermissionsByObjectMetadataId } = useObjectPermissions(); diff --git a/packages/twenty-front/src/modules/object-record/hooks/useMergeManyRecordsMutation.ts b/packages/twenty-front/src/modules/object-record/hooks/useMergeManyRecordsMutation.ts index 1901d8e2e8e..6cee6851709 100644 --- a/packages/twenty-front/src/modules/object-record/hooks/useMergeManyRecordsMutation.ts +++ b/packages/twenty-front/src/modules/object-record/hooks/useMergeManyRecordsMutation.ts @@ -1,7 +1,7 @@ import gql from 'graphql-tag'; import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { mapObjectMetadataToGraphQLQuery } from '@/object-metadata/utils/mapObjectMetadataToGraphQLQuery'; import { EMPTY_MUTATION } from '@/object-record/constants/EmptyMutation'; @@ -30,7 +30,7 @@ export const useMergeManyRecordsMutation = ({ const appliedRecordGqlFields = recordGqlFields ?? depthOneRecordGqlFields; - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const { objectPermissionsByObjectMetadataId } = useObjectPermissions(); diff --git a/packages/twenty-front/src/modules/object-record/multiple-objects/hooks/useGenerateCombinedFindManyRecordsQuery.ts b/packages/twenty-front/src/modules/object-record/multiple-objects/hooks/useGenerateCombinedFindManyRecordsQuery.ts index 3a56c98539c..bc6e8617fc5 100644 --- a/packages/twenty-front/src/modules/object-record/multiple-objects/hooks/useGenerateCombinedFindManyRecordsQuery.ts +++ b/packages/twenty-front/src/modules/object-record/multiple-objects/hooks/useGenerateCombinedFindManyRecordsQuery.ts @@ -2,7 +2,7 @@ import { gql } from '@apollo/client'; import { isNonEmptyArray, isUndefined } from '@sniptt/guards'; import { useMemo } from 'react'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { getObjectPermissionsForObject } from '@/object-metadata/utils/getObjectPermissionsForObject'; import { mapObjectMetadataToGraphQLQuery } from '@/object-metadata/utils/mapObjectMetadataToGraphQLQuery'; @@ -18,7 +18,7 @@ export const useGenerateCombinedFindManyRecordsQuery = ({ }: { operationSignatures: RecordGqlOperationSignature[]; }) => { - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const { objectPermissionsByObjectMetadataId } = useObjectPermissions(); return useMemo(() => { diff --git a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/states/fieldMetadataItemUsedInDropdownComponentSelector.ts b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/states/fieldMetadataItemUsedInDropdownComponentSelector.ts index 300f07d60ce..0ed2ee6d645 100644 --- a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/states/fieldMetadataItemUsedInDropdownComponentSelector.ts +++ b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/states/fieldMetadataItemUsedInDropdownComponentSelector.ts @@ -1,4 +1,4 @@ -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; import { ObjectFilterDropdownComponentInstanceContext } from '@/object-record/object-filter-dropdown/states/contexts/ObjectFilterDropdownComponentInstanceContext'; import { fieldMetadataItemIdUsedInDropdownComponentState } from '@/object-record/object-filter-dropdown/states/fieldMetadataItemIdUsedInDropdownComponentState'; @@ -16,7 +16,7 @@ export const fieldMetadataItemUsedInDropdownComponentSelector = componentStateKey, ); - const objectMetadataItems = get(objectMetadataItemsState); + const objectMetadataItems = get(objectMetadataItemsSelector); const correspondingFieldMetadataItem = objectMetadataItems .flatMap((objectMetadataItem) => objectMetadataItem.fields) diff --git a/packages/twenty-front/src/modules/object-record/record-calendar/states/selectors/calendarDayRecordsComponentFamilySelector.ts b/packages/twenty-front/src/modules/object-record/record-calendar/states/selectors/calendarDayRecordsComponentFamilySelector.ts index 68470cf3bce..307306b177f 100644 --- a/packages/twenty-front/src/modules/object-record/record-calendar/states/selectors/calendarDayRecordsComponentFamilySelector.ts +++ b/packages/twenty-front/src/modules/object-record/record-calendar/states/selectors/calendarDayRecordsComponentFamilySelector.ts @@ -1,4 +1,4 @@ -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { hasObjectMetadataItemPositionField } from '@/object-metadata/utils/hasObjectMetadataItemPositionField'; import { RecordCalendarComponentInstanceContext } from '@/object-record/record-calendar/states/contexts/RecordCalendarComponentInstanceContext'; @@ -26,7 +26,7 @@ export const calendarDayRecordIdsComponentFamilySelector = recordIndexCalendarFieldMetadataIdState, ); - const objectMetadataItems = get(objectMetadataItemsState); + const objectMetadataItems = get(objectMetadataItemsSelector); const objectMetadataItem = objectMetadataItems.find( (objectMetadataItem) => objectMetadataItem.fields.some( diff --git a/packages/twenty-front/src/modules/object-record/record-field/states/visibleRecordFieldsComponentSelector.ts b/packages/twenty-front/src/modules/object-record/record-field/states/visibleRecordFieldsComponentSelector.ts index 80e44678e4a..7c5a7a60526 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/states/visibleRecordFieldsComponentSelector.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/states/visibleRecordFieldsComponentSelector.ts @@ -1,4 +1,4 @@ -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { isActiveFieldMetadataItem } from '@/object-metadata/utils/isActiveFieldMetadataItem'; import { RecordFieldsComponentInstanceContext } from '@/object-record/record-field/states/context/RecordFieldsComponentInstanceContext'; @@ -21,7 +21,7 @@ export const visibleRecordFieldsComponentSelector = createAtomComponentSelector< componentStateKey, ); - const objectMetadataItems = get(objectMetadataItemsState); + const objectMetadataItems = get(objectMetadataItemsSelector); return filterVisibleAndReadableRecordFields( currentRecordFields, diff --git a/packages/twenty-front/src/modules/object-record/record-field/ui/hooks/useClearField.ts b/packages/twenty-front/src/modules/object-record/record-field/ui/hooks/useClearField.ts index 327acf081f3..3cb5c66d396 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/ui/hooks/useClearField.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/ui/hooks/useClearField.ts @@ -1,7 +1,7 @@ import { useCallback, useContext } from 'react'; import { useStore } from 'jotai'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { recordStoreFamilySelector } from '@/object-record/record-store/states/selectors/recordStoreFamilySelector'; import { generateEmptyFieldValue } from '@/object-record/utils/generateEmptyFieldValue'; @@ -20,7 +20,7 @@ export const useClearField = () => { const [updateRecord] = useUpdateRecord(); const clearField = useCallback(() => { - const objectMetadataItems = store.get(objectMetadataItemsState.atom); + const objectMetadataItems = store.get(objectMetadataItemsSelector.atom); const foundObjectMetadataItem = objectMetadataItems.find( (item) => diff --git a/packages/twenty-front/src/modules/object-record/record-field/ui/hooks/useOpenFieldInputEditMode.ts b/packages/twenty-front/src/modules/object-record/record-field/ui/hooks/useOpenFieldInputEditMode.ts index e3e06e0cc56..08bbf7be088 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/ui/hooks/useOpenFieldInputEditMode.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/ui/hooks/useOpenFieldInputEditMode.ts @@ -5,7 +5,7 @@ import { type Task } from '@/activities/types/Task'; import { type TaskTarget } from '@/activities/types/TaskTarget'; import { getActivityTargetObjectRecords } from '@/activities/utils/getActivityTargetObjectRecords'; import { currentWorkspaceState } from '@/auth/states/currentWorkspaceState'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { useUpdateOneRecord } from '@/object-record/hooks/useUpdateOneRecord'; import { useOpenJunctionRelationFieldInput } from '@/object-record/record-field/ui/hooks/useOpenJunctionRelationFieldInput'; import { useOpenFilesFieldInput } from '@/object-record/record-field/ui/meta-types/input/hooks/useOpenFilesFieldInput'; @@ -71,7 +71,7 @@ export const useOpenFieldInputEditMode = () => { recordId: string; prefix?: string; }) => { - const objectMetadataItems = store.get(objectMetadataItemsState.atom); + const objectMetadataItems = store.get(objectMetadataItemsSelector.atom); const currentWorkspace = store.get(currentWorkspaceState.atom); diff --git a/packages/twenty-front/src/modules/object-record/record-field/ui/hooks/useOpenJunctionRelationFieldInput.ts b/packages/twenty-front/src/modules/object-record/record-field/ui/hooks/useOpenJunctionRelationFieldInput.ts index 1dc875fa234..db5c42a9253 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/ui/hooks/useOpenJunctionRelationFieldInput.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/ui/hooks/useOpenJunctionRelationFieldInput.ts @@ -1,4 +1,4 @@ -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { type FieldDefinition } from '@/object-record/record-field/ui/types/FieldDefinition'; import { type FieldRelationFromManyValue, @@ -37,7 +37,7 @@ export const useOpenJunctionRelationFieldInput = () => { recordId: string; prefix?: string; }) => { - const objectMetadataItems = store.get(objectMetadataItemsState.atom); + const objectMetadataItems = store.get(objectMetadataItemsSelector.atom); const sourceObjectMetadataId = objectMetadataItems.find( (item) => diff --git a/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/input/hooks/useOpenMorphRelationOneToManyFieldInput.tsx b/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/input/hooks/useOpenMorphRelationOneToManyFieldInput.tsx index 950d5f9b620..425a61b4cc2 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/input/hooks/useOpenMorphRelationOneToManyFieldInput.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/input/hooks/useOpenMorphRelationOneToManyFieldInput.tsx @@ -1,6 +1,6 @@ import { useStore } from 'jotai'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { type FieldDefinition } from '@/object-record/record-field/ui/types/FieldDefinition'; import { type FieldMorphRelationMetadata } from '@/object-record/record-field/ui/types/FieldMetadata'; @@ -55,7 +55,7 @@ export const useOpenMorphRelationOneToManyFieldInput = () => { ), ); - const objectMetadataItems = store.get(objectMetadataItemsState.atom); + const objectMetadataItems = store.get(objectMetadataItemsSelector.atom); const objectMetadataItemArray = objectMetadataItems.filter( (objectMetadataItem) => diff --git a/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/input/hooks/useOpenRelationFromManyFieldInput.tsx b/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/input/hooks/useOpenRelationFromManyFieldInput.tsx index 96f6f0aaa2a..47610d80524 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/input/hooks/useOpenRelationFromManyFieldInput.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/ui/meta-types/input/hooks/useOpenRelationFromManyFieldInput.tsx @@ -1,4 +1,4 @@ -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { type FieldRelationFromManyValue, type FieldRelationValue, @@ -47,7 +47,7 @@ export const useOpenRelationFromManyFieldInput = () => { recordStoreFamilySelector.selectorFamily({ recordId, fieldName }), ) as FieldRelationValue) ?? []; - const objectMetadataItems = store.get(objectMetadataItemsState.atom); + const objectMetadataItems = store.get(objectMetadataItemsSelector.atom); const objectMetadataItem = objectMetadataItems.find( (objectMetadataItem) => diff --git a/packages/twenty-front/src/modules/object-record/record-filter/states/hasAnySoftDeleteFilterOnView.ts b/packages/twenty-front/src/modules/object-record/record-filter/states/hasAnySoftDeleteFilterOnView.ts index a2b411eae6c..85e1fb498d5 100644 --- a/packages/twenty-front/src/modules/object-record/record-filter/states/hasAnySoftDeleteFilterOnView.ts +++ b/packages/twenty-front/src/modules/object-record/record-filter/states/hasAnySoftDeleteFilterOnView.ts @@ -1,4 +1,4 @@ -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { RecordFiltersComponentInstanceContext } from '@/object-record/record-filter/states/context/RecordFiltersComponentInstanceContext'; import { currentRecordFiltersComponentState } from '@/object-record/record-filter/states/currentRecordFiltersComponentState'; import { type RecordFilter } from '@/object-record/record-filter/types/RecordFilter'; @@ -12,7 +12,7 @@ export const hasAnySoftDeleteFilterOnViewComponentSelector = get: (componentStateKey) => ({ get }) => { - const objectMetadataItems = get(objectMetadataItemsState); + const objectMetadataItems = get(objectMetadataItemsSelector); const currentRecordFilters = get( currentRecordFiltersComponentState, componentStateKey, diff --git a/packages/twenty-front/src/modules/object-record/record-group/hooks/useSetRecordGroups.ts b/packages/twenty-front/src/modules/object-record/record-group/hooks/useSetRecordGroups.ts index 3b53fc9c4a1..0e592c43d1a 100644 --- a/packages/twenty-front/src/modules/object-record/record-group/hooks/useSetRecordGroups.ts +++ b/packages/twenty-front/src/modules/object-record/record-group/hooks/useSetRecordGroups.ts @@ -1,6 +1,6 @@ import { useStore } from 'jotai'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { recordGroupDefinitionFamilyState } from '@/object-record/record-group/states/recordGroupDefinitionFamilyState'; import { recordGroupIdsComponentState } from '@/object-record/record-group/states/recordGroupIdsComponentState'; @@ -28,7 +28,7 @@ export const useSetRecordGroups = () => { recordIndexId: string; objectMetadataItemId: string; }) => { - const objectMetadataItems = store.get(objectMetadataItemsState.atom); + const objectMetadataItems = store.get(objectMetadataItemsSelector.atom); const objectMetadataItem = objectMetadataItems.find( (objectMetadataItem) => objectMetadataItem.id === objectMetadataItemId, diff --git a/packages/twenty-front/src/modules/object-record/record-store/states/selectors/recordStoreIdentifierFamilySelector.ts b/packages/twenty-front/src/modules/object-record/record-store/states/selectors/recordStoreIdentifierFamilySelector.ts index b844b125d51..115a9525347 100644 --- a/packages/twenty-front/src/modules/object-record/record-store/states/selectors/recordStoreIdentifierFamilySelector.ts +++ b/packages/twenty-front/src/modules/object-record/record-store/states/selectors/recordStoreIdentifierFamilySelector.ts @@ -1,4 +1,4 @@ -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { getObjectRecordIdentifier } from '@/object-metadata/utils/getObjectRecordIdentifier'; import { type ObjectRecordIdentifier } from '@/object-record/types/ObjectRecordIdentifier'; import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState'; @@ -26,7 +26,7 @@ export const recordStoreIdentifierFamilySelector = createAtomFamilySelector< recordFromStore?.__typename ?? '', ); - const objectMetadataItems = get(objectMetadataItemsState); + const objectMetadataItems = get(objectMetadataItemsSelector); const objectMetadataItem = objectMetadataItems.find( (item) => item.nameSingular === objectNameSingular, diff --git a/packages/twenty-front/src/modules/object-record/record-store/states/selectors/recordStoreIdentifiersSelector.ts b/packages/twenty-front/src/modules/object-record/record-store/states/selectors/recordStoreIdentifiersSelector.ts index 1b0532b7642..44c66963f20 100644 --- a/packages/twenty-front/src/modules/object-record/record-store/states/selectors/recordStoreIdentifiersSelector.ts +++ b/packages/twenty-front/src/modules/object-record/record-store/states/selectors/recordStoreIdentifiersSelector.ts @@ -1,4 +1,4 @@ -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { getObjectRecordIdentifier } from '@/object-metadata/utils/getObjectRecordIdentifier'; import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState'; import { type ObjectRecordIdentifier } from '@/object-record/types/ObjectRecordIdentifier'; @@ -16,7 +16,7 @@ export const recordStoreIdentifiersFamilySelector = createAtomFamilySelector< get: ({ recordIds, allowRequestsToTwentyIcons }) => ({ get }) => { - const objectMetadataItems = get(objectMetadataItemsState); + const objectMetadataItems = get(objectMetadataItemsSelector); return recordIds .map((recordId) => { diff --git a/packages/twenty-front/src/modules/object-record/spreadsheet-import/hooks/useBuildSpreadSheetImportFields.ts b/packages/twenty-front/src/modules/object-record/spreadsheet-import/hooks/useBuildSpreadSheetImportFields.ts index fc8c4e17a61..d054a6c6d36 100644 --- a/packages/twenty-front/src/modules/object-record/spreadsheet-import/hooks/useBuildSpreadSheetImportFields.ts +++ b/packages/twenty-front/src/modules/object-record/spreadsheet-import/hooks/useBuildSpreadSheetImportFields.ts @@ -1,4 +1,4 @@ -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { isCompositeFieldType } from '@/object-record/object-filter-dropdown/utils/isCompositeFieldType'; @@ -25,7 +25,7 @@ import { FieldMetadataType, RelationType } from '~/generated-metadata/graphql'; export const useBuildSpreadsheetImportFields = () => { const { getIcon } = useIcons(); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const buildSpreadsheetImportFields = ( fieldMetadataItems: FieldMetadataItem[], diff --git a/packages/twenty-front/src/modules/page-layout/widgets/field/hooks/useOpenFieldWidgetFieldInputEditMode.ts b/packages/twenty-front/src/modules/page-layout/widgets/field/hooks/useOpenFieldWidgetFieldInputEditMode.ts index 714293a84c6..638d049745f 100644 --- a/packages/twenty-front/src/modules/page-layout/widgets/field/hooks/useOpenFieldWidgetFieldInputEditMode.ts +++ b/packages/twenty-front/src/modules/page-layout/widgets/field/hooks/useOpenFieldWidgetFieldInputEditMode.ts @@ -4,7 +4,7 @@ import { type NoteTarget } from '@/activities/types/NoteTarget'; import { type Task } from '@/activities/types/Task'; import { type TaskTarget } from '@/activities/types/TaskTarget'; import { getActivityTargetObjectRecords } from '@/activities/utils/getActivityTargetObjectRecords'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { useOpenMorphRelationManyToOneFieldInput } from '@/object-record/record-field/ui/meta-types/input/hooks/useOpenMorphRelationManyToOneFieldInput'; import { useOpenMorphRelationOneToManyFieldInput } from '@/object-record/record-field/ui/meta-types/input/hooks/useOpenMorphRelationOneToManyFieldInput'; import { useOpenRelationFromManyFieldInput } from '@/object-record/record-field/ui/meta-types/input/hooks/useOpenRelationFromManyFieldInput'; @@ -75,7 +75,7 @@ export const useOpenFieldWidgetFieldInputEditMode = () => { const activity = store.get(recordStoreFamilyState.atomFamily(recordId)); - const objectMetadataItems = store.get(objectMetadataItemsState.atom); + const objectMetadataItems = store.get(objectMetadataItemsSelector.atom); const activityTargetObjectRecords = getActivityTargetObjectRecords({ activityRecord: activity as Task | Note, diff --git a/packages/twenty-front/src/modules/settings/components/SettingsSummaryCard.tsx b/packages/twenty-front/src/modules/settings/components/SettingsSummaryCard.tsx deleted file mode 100644 index 2a37b249e75..00000000000 --- a/packages/twenty-front/src/modules/settings/components/SettingsSummaryCard.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import { styled } from '@linaria/react'; -import { type ReactNode } from 'react'; -import { Card, CardContent } from 'twenty-ui/layout'; -import { themeCssVariables } from 'twenty-ui/theme-constants'; - -type SettingsSummaryCardProps = { - title: ReactNode; - rightComponent: ReactNode; -}; - -const StyledCardContentContainer = styled.div` - > * { - align-items: center; - display: flex; - gap: ${themeCssVariables.spacing[2]}; - min-height: ${themeCssVariables.spacing[6]}; - padding: ${themeCssVariables.spacing[2]}; - } -`; - -const StyledTitle = styled.div` - color: ${themeCssVariables.font.color.primary}; - display: flex; - font-weight: ${themeCssVariables.font.weight.medium}; - gap: ${themeCssVariables.spacing[2]}; - margin-right: auto; -`; - -export const SettingsSummaryCard = ({ - title, - rightComponent, -}: SettingsSummaryCardProps) => ( - - - - {title} - {rightComponent} - - - -); diff --git a/packages/twenty-front/src/modules/settings/data-model/graph-overview/components/SettingsDataModelOverviewField.tsx b/packages/twenty-front/src/modules/settings/data-model/graph-overview/components/SettingsDataModelOverviewField.tsx index c758e1de6b5..46ecf92c826 100644 --- a/packages/twenty-front/src/modules/settings/data-model/graph-overview/components/SettingsDataModelOverviewField.tsx +++ b/packages/twenty-front/src/modules/settings/data-model/graph-overview/components/SettingsDataModelOverviewField.tsx @@ -1,7 +1,7 @@ import { isDefined } from 'twenty-shared/utils'; import { styled } from '@linaria/react'; import { Handle, Position } from '@xyflow/react'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; import { useIcons } from 'twenty-ui/display'; @@ -28,7 +28,7 @@ const StyledFieldName = styled.div` export const ObjectFieldRow = ({ field }: ObjectFieldRowProps) => { const { theme } = useContext(ThemeContext); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const { getIcon } = useIcons(); const relatedObjectId = field.relation?.targetObjectMetadata.id; diff --git a/packages/twenty-front/src/modules/side-panel/components/SidePanelContainer.tsx b/packages/twenty-front/src/modules/side-panel/components/SidePanelContainer.tsx index fef22e17c2e..d6ff95812f6 100644 --- a/packages/twenty-front/src/modules/side-panel/components/SidePanelContainer.tsx +++ b/packages/twenty-front/src/modules/side-panel/components/SidePanelContainer.tsx @@ -4,7 +4,7 @@ import { SIDE_PANEL_COMPONENT_INSTANCE_ID } from '@/side-panel/constants/SidePan import { contextStoreCurrentObjectMetadataItemIdComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemIdComponentState'; import { contextStoreCurrentViewIdComponentState } from '@/context-store/states/contextStoreCurrentViewIdComponentState'; import { ContextStoreComponentInstanceContext } from '@/context-store/states/contexts/ContextStoreComponentInstanceContext'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { RecordComponentInstanceContextsWrapper } from '@/object-record/components/RecordComponentInstanceContextsWrapper'; import { getRecordIndexIdFromObjectNamePluralAndViewId } from '@/object-record/utils/getRecordIndexIdFromObjectNamePluralAndViewId'; import { useIsMobile } from '@/ui/utilities/responsive/hooks/useIsMobile'; @@ -34,7 +34,7 @@ export const SidePanelContainer = ({ children }: SidePanelContainerProps) => { ); const isMobile = useIsMobile(); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const objectMetadataItem = objectMetadataItems.find( (objectMetadataItem) => diff --git a/packages/twenty-front/src/modules/side-panel/hooks/useOpenCalendarEventInSidePanel.ts b/packages/twenty-front/src/modules/side-panel/hooks/useOpenCalendarEventInSidePanel.ts index 226372c4da5..9fccf5606a9 100644 --- a/packages/twenty-front/src/modules/side-panel/hooks/useOpenCalendarEventInSidePanel.ts +++ b/packages/twenty-front/src/modules/side-panel/hooks/useOpenCalendarEventInSidePanel.ts @@ -24,7 +24,7 @@ export const useOpenCalendarEventInSidePanel = () => { // TODO: Uncomment this once we need to calendar event title in the navigation // const objectMetadataItem = snapshot - // .getLoadable(objectMetadataItemsState) + // .getLoadable(objectMetadataItemsSelector) // .getValue() // .find( // ({ nameSingular }) => diff --git a/packages/twenty-front/src/modules/side-panel/hooks/useOpenEmailThreadInSidePanel.ts b/packages/twenty-front/src/modules/side-panel/hooks/useOpenEmailThreadInSidePanel.ts index 378315803d4..5bb1845e045 100644 --- a/packages/twenty-front/src/modules/side-panel/hooks/useOpenEmailThreadInSidePanel.ts +++ b/packages/twenty-front/src/modules/side-panel/hooks/useOpenEmailThreadInSidePanel.ts @@ -24,7 +24,7 @@ export const useOpenEmailThreadInSidePanel = () => { // TODO: Uncomment this once we need to show the thread title in the navigation // const objectMetadataItem = snapshot - // .getLoadable(objectMetadataItemsState) + // .getLoadable(objectMetadataItemsSelector) // .getValue() // .find( // ({ nameSingular }) => diff --git a/packages/twenty-front/src/modules/side-panel/hooks/useSidePanelContextChips.tsx b/packages/twenty-front/src/modules/side-panel/hooks/useSidePanelContextChips.tsx index 933bdb64fd4..1404e3b870e 100644 --- a/packages/twenty-front/src/modules/side-panel/hooks/useSidePanelContextChips.tsx +++ b/packages/twenty-front/src/modules/side-panel/hooks/useSidePanelContextChips.tsx @@ -4,7 +4,7 @@ import { useSidePanelHistory } from '@/side-panel/hooks/useSidePanelHistory'; import { sidePanelNavigationMorphItemsByPageState } from '@/side-panel/states/sidePanelNavigationMorphItemsByPageState'; import { sidePanelNavigationStackState } from '@/side-panel/states/sidePanelNavigationStackState'; import { allowRequestsToTwentyIconsState } from '@/client-config/states/allowRequestsToTwentyIcons'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { recordStoreIdentifiersFamilySelector } from '@/object-record/record-store/states/selectors/recordStoreIdentifiersSelector'; import { recordStoreRecordsSelector } from '@/object-record/record-store/states/selectors/recordStoreRecordsSelector'; import { useAtomFamilySelectorValue } from '@/ui/utilities/state/jotai/hooks/useAtomFamilySelectorValue'; @@ -25,7 +25,7 @@ export const useSidePanelContextChips = () => { allowRequestsToTwentyIconsState, ); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const { navigateSidePanelHistory } = useSidePanelHistory(); diff --git a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditObjectViewBase.tsx b/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditObjectViewBase.tsx index f271974b554..c66180dd7cd 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditObjectViewBase.tsx +++ b/packages/twenty-front/src/modules/side-panel/pages/navigation-menu-item/components/SidePanelEditObjectViewBase.tsx @@ -3,7 +3,7 @@ import { navigationMenuItemsSelector } from '@/navigation-menu-item/states/navig import { getEffectiveNavigationMenuItemColor } from '@/navigation-menu-item/utils/getEffectiveNavigationMenuItemColor'; import { getNavigationMenuItemObjectNameSingular } from '@/navigation-menu-item/utils/getNavigationMenuItemObjectNameSingular'; import { parseThemeColor } from '@/navigation-menu-item/utils/parseThemeColor'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { SidePanelGroup } from '@/side-panel/components/SidePanelGroup'; import { SidePanelList } from '@/side-panel/components/SidePanelList'; import { SidePanelEditColorOption } from '@/side-panel/pages/navigation-menu-item/components/SidePanelEditColorOption'; @@ -39,7 +39,7 @@ export const SidePanelEditObjectViewBase = ({ }: SidePanelEditObjectViewBaseProps) => { const { t } = useLingui(); const selectableItemIds = getOrganizeActionsSelectableItemIds(true); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const views = useAtomStateValue(viewsSelector); const objectNameSingular = isDefined(selectedItem) diff --git a/packages/twenty-front/src/modules/side-panel/pages/page-layout/components/SidePanelChartFilterSubPage.tsx b/packages/twenty-front/src/modules/side-panel/pages/page-layout/components/SidePanelChartFilterSubPage.tsx index c22fb2356b8..fe2ccd3bf20 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/page-layout/components/SidePanelChartFilterSubPage.tsx +++ b/packages/twenty-front/src/modules/side-panel/pages/page-layout/components/SidePanelChartFilterSubPage.tsx @@ -1,4 +1,4 @@ -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { pageLayoutDraftComponentState } from '@/page-layout/states/pageLayoutDraftComponentState'; import { pageLayoutEditingWidgetIdComponentState } from '@/page-layout/states/pageLayoutEditingWidgetIdComponentState'; import { ChartFiltersSettings } from '@/side-panel/pages/page-layout/components/ChartFiltersSettings'; @@ -25,7 +25,7 @@ export const SidePanelChartFilterSubPage = () => { .flatMap((tab) => tab.widgets) .find((widget) => widget.id === pageLayoutEditingWidgetId); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); if ( !isDefined(widgetInEditMode) || diff --git a/packages/twenty-front/src/modules/side-panel/pages/page-layout/hooks/useChartSettingsValues.ts b/packages/twenty-front/src/modules/side-panel/pages/page-layout/hooks/useChartSettingsValues.ts index 02cd207de39..b7d2f7c4b92 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/page-layout/hooks/useChartSettingsValues.ts +++ b/packages/twenty-front/src/modules/side-panel/pages/page-layout/hooks/useChartSettingsValues.ts @@ -6,7 +6,7 @@ import { getChartAxisNameDisplayOptions } from '@/side-panel/pages/page-layout/u import { getChartFilterRulesCount } from '@/side-panel/pages/page-layout/utils/getChartFilterRulesCount'; import { getDateGranularityLabel } from '@/side-panel/pages/page-layout/utils/getDateGranularityLabel'; import { getFieldLabelWithSubField } from '@/side-panel/pages/page-layout/utils/getFieldLabelWithSubField'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { getAggregateOperationLabel } from '@/object-record/record-board/record-board-column/utils/getAggregateOperationLabel'; import { convertAggregateOperationToExtendedAggregateOperation } from '@/object-record/utils/convertAggregateOperationToExtendedAggregateOperation'; import { plural, t } from '@lingui/core/macro'; @@ -22,7 +22,7 @@ export const useChartSettingsValues = ({ objectMetadataId: string; configuration?: ChartConfiguration; }) => { - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const objectMetadataItem = objectMetadataItems.find( (objectMetadataItem) => objectMetadataItem.id === objectMetadataId, diff --git a/packages/twenty-front/src/modules/side-panel/pages/page-layout/hooks/useGraphGroupBySortOptionLabels.ts b/packages/twenty-front/src/modules/side-panel/pages/page-layout/hooks/useGraphGroupBySortOptionLabels.ts index 640d83cb684..b6160710d47 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/page-layout/hooks/useGraphGroupBySortOptionLabels.ts +++ b/packages/twenty-front/src/modules/side-panel/pages/page-layout/hooks/useGraphGroupBySortOptionLabels.ts @@ -1,6 +1,6 @@ import { getFieldLabelWithSubField } from '@/side-panel/pages/page-layout/utils/getFieldLabelWithSubField'; import { getSortLabelSuffixForFieldType } from '@/side-panel/pages/page-layout/utils/getSortLabelSuffixForFieldType'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { t } from '@lingui/core/macro'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { type CompositeFieldSubFieldName } from 'twenty-shared/types'; @@ -12,7 +12,7 @@ export const useGraphGroupBySortOptionLabels = ({ }: { objectMetadataId: string; }) => { - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const objectMetadataItem = objectMetadataItems.find( (objectMetadataItem) => objectMetadataItem.id === objectMetadataId, diff --git a/packages/twenty-front/src/modules/side-panel/pages/page-layout/hooks/useGraphXSortOptionLabels.ts b/packages/twenty-front/src/modules/side-panel/pages/page-layout/hooks/useGraphXSortOptionLabels.ts index 7d5fbfba62a..8afd4e75c57 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/page-layout/hooks/useGraphXSortOptionLabels.ts +++ b/packages/twenty-front/src/modules/side-panel/pages/page-layout/hooks/useGraphXSortOptionLabels.ts @@ -1,6 +1,6 @@ import { getFieldLabelWithSubField } from '@/side-panel/pages/page-layout/utils/getFieldLabelWithSubField'; import { getSortLabelSuffixForFieldType } from '@/side-panel/pages/page-layout/utils/getSortLabelSuffixForFieldType'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { getAggregateOperationLabel } from '@/object-record/record-board/record-board-column/utils/getAggregateOperationLabel'; import { type ExtendedAggregateOperations } from '@/object-record/record-table/types/ExtendedAggregateOperations'; import { t } from '@lingui/core/macro'; @@ -14,7 +14,7 @@ export const useGraphXSortOptionLabels = ({ }: { objectMetadataId: string; }) => { - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const objectMetadataItem = objectMetadataItems.find( (objectMetadataItem) => objectMetadataItem.id === objectMetadataId, diff --git a/packages/twenty-front/src/modules/side-panel/pages/root/components/SidePanelResetContextToSelectionButton.tsx b/packages/twenty-front/src/modules/side-panel/pages/root/components/SidePanelResetContextToSelectionButton.tsx index 8e4d6f9ea15..ec79e23a7db 100644 --- a/packages/twenty-front/src/modules/side-panel/pages/root/components/SidePanelResetContextToSelectionButton.tsx +++ b/packages/twenty-front/src/modules/side-panel/pages/root/components/SidePanelResetContextToSelectionButton.tsx @@ -5,7 +5,7 @@ import { SIDE_PANEL_RESET_CONTEXT_TO_SELECTION } from '@/side-panel/constants/Si import { useResetPreviousSidePanelContext } from '@/side-panel/pages/root/hooks/useResetPreviousSidePanelContext'; import { contextStoreCurrentObjectMetadataItemIdComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemIdComponentState'; import { contextStoreTargetedRecordsRuleComponentState } from '@/context-store/states/contextStoreTargetedRecordsRuleComponentState'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { SelectableListItem } from '@/ui/layout/selectable-list/components/SelectableListItem'; import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentStateValue'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; @@ -24,7 +24,7 @@ export const SidePanelResetContextToSelectionButton = () => { SIDE_PANEL_PREVIOUS_COMPONENT_INSTANCE_ID, ); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const objectMetadataItem = objectMetadataItems.find( (objectMetadataItem) => diff --git a/packages/twenty-front/src/modules/sign-in-background-mock/components/SignInAppNavigationDrawerMock.tsx b/packages/twenty-front/src/modules/sign-in-background-mock/components/SignInAppNavigationDrawerMock.tsx index 3a5c2165f66..626bca578d7 100644 --- a/packages/twenty-front/src/modules/sign-in-background-mock/components/SignInAppNavigationDrawerMock.tsx +++ b/packages/twenty-front/src/modules/sign-in-background-mock/components/SignInAppNavigationDrawerMock.tsx @@ -1,7 +1,7 @@ import { NavigationDrawer } from '@/ui/navigation/navigation-drawer/components/NavigationDrawer'; import { NavigationDrawerSectionForObjectMetadataItems } from '@/object-metadata/components/NavigationDrawerSectionForObjectMetadataItems'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { NavigationDrawerItem } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerItem'; import { NavigationDrawerSection } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerSection'; import { DEFAULT_WORKSPACE_NAME } from '@/ui/navigation/navigation-drawer/constants/DefaultWorkspaceName'; @@ -34,7 +34,7 @@ export const SignInAppNavigationDrawerMock = ({ }: SignInAppNavigationDrawerMockProps) => { const isMobile = useIsMobile(); const { t } = useLingui(); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); return ( diff --git a/packages/twenty-front/src/modules/sign-in-background-mock/components/SignInBackgroundMockContainer.tsx b/packages/twenty-front/src/modules/sign-in-background-mock/components/SignInBackgroundMockContainer.tsx index 85350c0da49..d84608fd463 100644 --- a/packages/twenty-front/src/modules/sign-in-background-mock/components/SignInBackgroundMockContainer.tsx +++ b/packages/twenty-front/src/modules/sign-in-background-mock/components/SignInBackgroundMockContainer.tsx @@ -4,7 +4,7 @@ import { CommandMenuComponentInstanceContext } from '@/command-menu/states/conte import { MAIN_CONTEXT_STORE_INSTANCE_ID } from '@/context-store/constants/MainContextStoreInstanceId'; import { contextStoreCurrentObjectMetadataItemIdComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemIdComponentState'; import { ContextStoreComponentInstanceContext } from '@/context-store/states/contexts/ContextStoreComponentInstanceContext'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { RecordComponentInstanceContextsWrapper } from '@/object-record/components/RecordComponentInstanceContextsWrapper'; import { RecordIndexContextProvider } from '@/object-record/record-index/contexts/RecordIndexContext'; import { useRecordIndexFieldMetadataDerivedStates } from '@/object-record/record-index/hooks/useRecordIndexFieldMetadataDerivedStates'; @@ -29,7 +29,7 @@ export const SignInBackgroundMockContainer = () => { const recordIndexId = 'sign-up-mock-record-table-id'; const viewBarId = 'companies-mock'; - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const contextStoreCurrentObjectMetadataItemId = useAtomComponentStateValue( contextStoreCurrentObjectMetadataItemIdComponentState, diff --git a/packages/twenty-front/src/modules/sse-db-event/components/SSEEventStreamEffect.tsx b/packages/twenty-front/src/modules/sse-db-event/components/SSEEventStreamEffect.tsx index cae51e3b4a4..8268c8f6748 100644 --- a/packages/twenty-front/src/modules/sse-db-event/components/SSEEventStreamEffect.tsx +++ b/packages/twenty-front/src/modules/sse-db-event/components/SSEEventStreamEffect.tsx @@ -1,6 +1,6 @@ import { useHasAccessTokenPair } from '@/auth/hooks/useHasAccessTokenPair'; import { currentUserState } from '@/auth/states/currentUserState'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { useTriggerEventStreamCreation } from '@/sse-db-event/hooks/useTriggerEventStreamCreation'; import { useTriggerEventStreamDestroy } from '@/sse-db-event/hooks/useTriggerEventStreamDestroy'; import { isCreatingSseEventStreamState } from '@/sse-db-event/states/isCreatingSseEventStreamState'; @@ -14,7 +14,7 @@ import { isDefined, isNonEmptyArray } from 'twenty-shared/utils'; import { OnboardingStatus } from '~/generated-metadata/graphql'; export const SSEEventStreamEffect = () => { - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const sseEventStreamId = useAtomStateValue(sseEventStreamIdState); const isCreatingSseEventStream = useAtomStateValue( diff --git a/packages/twenty-front/src/modules/sse-db-event/hooks/useDispatchObjectRecordEventsFromSseToBrowserEvents.ts b/packages/twenty-front/src/modules/sse-db-event/hooks/useDispatchObjectRecordEventsFromSseToBrowserEvents.ts index 08af985b676..de885955c11 100644 --- a/packages/twenty-front/src/modules/sse-db-event/hooks/useDispatchObjectRecordEventsFromSseToBrowserEvents.ts +++ b/packages/twenty-front/src/modules/sse-db-event/hooks/useDispatchObjectRecordEventsFromSseToBrowserEvents.ts @@ -1,5 +1,5 @@ import { dispatchObjectRecordOperationBrowserEvent } from '@/browser-event/utils/dispatchObjectRecordOperationBrowserEvent'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { groupObjectRecordSseEventsByObjectMetadataItemNameSingular } from '@/sse-db-event/utils/groupObjectRecordSseEventsByObjectMetadataItemNameSingular'; import { turnSseObjectRecordEventsToObjectRecordOperationBrowserEvents } from '@/sse-db-event/utils/turnSseObjectRecordEventToObjectRecordOperationBrowserEvent'; import { useStore } from 'jotai'; @@ -25,7 +25,7 @@ export const useDispatchObjectRecordEventsFromSseToBrowserEvents = () => { objectRecordEventsByObjectMetadataItemNameSingular.keys(), ); - const objectMetadataItems = store.get(objectMetadataItemsState.atom); + const objectMetadataItems = store.get(objectMetadataItemsSelector.atom); for (const objectMetadataItemNameSingular of objectMetadataItemNamesSingular) { const objectRecordEventsForThisObjectMetadataItem = diff --git a/packages/twenty-front/src/modules/views/hooks/__tests__/useMoveViewColumns.test.tsx b/packages/twenty-front/src/modules/views/hooks/__tests__/useMoveViewColumns.test.tsx deleted file mode 100644 index fe51ad10080..00000000000 --- a/packages/twenty-front/src/modules/views/hooks/__tests__/useMoveViewColumns.test.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import { renderHook } from '@testing-library/react'; - -import { useMoveViewColumns } from '@/views/hooks/useMoveViewColumns'; - -describe('useMoveViewColumns', () => { - it('should move columns to the left correctly', () => { - const { result } = renderHook(() => useMoveViewColumns()); - - const initialArray = [{ position: 0 }, { position: 1 }, { position: 2 }]; - - const movedArray = result.current.handleColumnMove('left', 1, initialArray); - - expect(movedArray).toEqual([ - { position: 0, index: 0 }, - { position: 1, index: 1 }, - { position: 2 }, - ]); - }); - - it('should move columns to the right correctly', () => { - const { result } = renderHook(() => useMoveViewColumns()); - - const initialArray = [{ position: 0 }, { position: 1 }, { position: 2 }]; - - const movedArray = result.current.handleColumnMove( - 'right', - 1, - initialArray, - ); - - expect(movedArray).toEqual([ - { position: 0 }, - { position: 1, index: 1 }, - { position: 2, index: 2 }, - ]); - }); - - it('should handle invalid moves without modifying the array', () => { - const { result } = renderHook(() => useMoveViewColumns()); - - const initialArray = [{ position: 0 }, { position: 1 }, { position: 2 }]; - - const movedArray = result.current.handleColumnMove('left', 0, initialArray); - - expect(movedArray).toEqual(initialArray); - }); -}); diff --git a/packages/twenty-front/src/modules/views/hooks/useCreateManyViewFieldGroups.ts b/packages/twenty-front/src/modules/views/hooks/useCreateManyViewFieldGroups.ts deleted file mode 100644 index b7f90cf88a6..00000000000 --- a/packages/twenty-front/src/modules/views/hooks/useCreateManyViewFieldGroups.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { usePerformViewFieldGroupAPIPersist } from '@/views/hooks/internal/usePerformViewFieldGroupAPIPersist'; - -type CreateViewFieldGroupInput = { - id: string; - name: string; - position: number; - isVisible: boolean; - viewId: string; -}; - -export const useCreateManyViewFieldGroups = () => { - const { performViewFieldGroupAPICreate } = - usePerformViewFieldGroupAPIPersist(); - - const createManyViewFieldGroups = async ( - inputs: CreateViewFieldGroupInput[], - ) => { - return performViewFieldGroupAPICreate({ inputs }); - }; - - return { createManyViewFieldGroups }; -}; diff --git a/packages/twenty-front/src/modules/views/hooks/useCreateViewFieldGroup.ts b/packages/twenty-front/src/modules/views/hooks/useCreateViewFieldGroup.ts deleted file mode 100644 index dd4d7535e68..00000000000 --- a/packages/twenty-front/src/modules/views/hooks/useCreateViewFieldGroup.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { usePerformViewFieldGroupAPIPersist } from '@/views/hooks/internal/usePerformViewFieldGroupAPIPersist'; - -type CreateViewFieldGroupInput = { - id: string; - name: string; - position: number; - isVisible: boolean; - viewId: string; -}; - -export const useCreateViewFieldGroup = () => { - const { performViewFieldGroupAPICreate } = - usePerformViewFieldGroupAPIPersist(); - - const createViewFieldGroup = async (input: CreateViewFieldGroupInput) => { - return performViewFieldGroupAPICreate({ - inputs: [input], - }); - }; - - return { createViewFieldGroup }; -}; diff --git a/packages/twenty-front/src/modules/views/hooks/useDeleteViewFieldGroup.ts b/packages/twenty-front/src/modules/views/hooks/useDeleteViewFieldGroup.ts deleted file mode 100644 index 9d56268c30c..00000000000 --- a/packages/twenty-front/src/modules/views/hooks/useDeleteViewFieldGroup.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { usePerformViewFieldGroupAPIPersist } from '@/views/hooks/internal/usePerformViewFieldGroupAPIPersist'; - -export const useDeleteViewFieldGroup = () => { - const { performViewFieldGroupAPIDelete } = - usePerformViewFieldGroupAPIPersist(); - - const deleteViewFieldGroup = async (viewFieldGroupId: string) => { - return performViewFieldGroupAPIDelete([ - { input: { id: viewFieldGroupId } }, - ]); - }; - - return { deleteViewFieldGroup }; -}; diff --git a/packages/twenty-front/src/modules/views/hooks/useGetViewById.ts b/packages/twenty-front/src/modules/views/hooks/useGetViewById.ts deleted file mode 100644 index e40341a7e2d..00000000000 --- a/packages/twenty-front/src/modules/views/hooks/useGetViewById.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { viewFromViewIdFamilySelector } from '@/views/states/selectors/viewFromViewIdFamilySelector'; -import { useStore } from 'jotai'; -import { useCallback } from 'react'; - -export const useGetViewById = () => { - const store = useStore(); - - const getViewById = useCallback( - (viewId: string | null) => { - const view = store.get( - viewFromViewIdFamilySelector.selectorFamily({ - viewId: viewId ?? '', - }), - ); - - return { view }; - }, - [store], - ); - - return { - getViewById, - }; -}; diff --git a/packages/twenty-front/src/modules/views/hooks/useMoveViewColumns.ts b/packages/twenty-front/src/modules/views/hooks/useMoveViewColumns.ts deleted file mode 100644 index 0e52b3adfb1..00000000000 --- a/packages/twenty-front/src/modules/views/hooks/useMoveViewColumns.ts +++ /dev/null @@ -1,39 +0,0 @@ -export const useMoveViewColumns = () => { - const handleColumnMove = ( - direction: 'left' | 'right', - currentArrayindex: number, - targetArray: T[], - ) => { - const targetArrayIndex = - direction === 'left' ? currentArrayindex - 1 : currentArrayindex + 1; - const targetArraySize = targetArray.length - 1; - if ( - currentArrayindex >= 0 && - targetArrayIndex >= 0 && - currentArrayindex <= targetArraySize && - targetArrayIndex <= targetArraySize - ) { - const currentEntity = targetArray[currentArrayindex]; - const targetEntity = targetArray[targetArrayIndex]; - const newArray = [...targetArray]; - - newArray[currentArrayindex] = { - ...targetEntity, - index: currentEntity.position, - }; - newArray[targetArrayIndex] = { - ...currentEntity, - index: targetEntity.position, - }; - - return newArray.map((column, index) => ({ - ...column, - position: index, - })); - } - - return targetArray; - }; - - return { handleColumnMove }; -}; diff --git a/packages/twenty-front/src/modules/views/hooks/useUpdateViewFieldGroup.ts b/packages/twenty-front/src/modules/views/hooks/useUpdateViewFieldGroup.ts deleted file mode 100644 index 4d016fe730c..00000000000 --- a/packages/twenty-front/src/modules/views/hooks/useUpdateViewFieldGroup.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { usePerformViewFieldGroupAPIPersist } from '@/views/hooks/internal/usePerformViewFieldGroupAPIPersist'; - -type UpdateViewFieldGroupInput = { - id: string; - name?: string; - position?: number; - isVisible?: boolean; -}; - -export const useUpdateViewFieldGroup = () => { - const { performViewFieldGroupAPIUpdate } = - usePerformViewFieldGroupAPIPersist(); - - const updateViewFieldGroup = async ({ - id, - name, - position, - isVisible, - }: UpdateViewFieldGroupInput) => { - return performViewFieldGroupAPIUpdate([ - { - input: { - id, - update: { - name, - position, - isVisible, - }, - }, - }, - ]); - }; - - return { updateViewFieldGroup }; -}; diff --git a/packages/twenty-front/src/modules/views/hooks/useViewsSideEffectsOnViewGroups.ts b/packages/twenty-front/src/modules/views/hooks/useViewsSideEffectsOnViewGroups.ts index 1db4cbdafe6..8aa4527965b 100644 --- a/packages/twenty-front/src/modules/views/hooks/useViewsSideEffectsOnViewGroups.ts +++ b/packages/twenty-front/src/modules/views/hooks/useViewsSideEffectsOnViewGroups.ts @@ -1,11 +1,11 @@ -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { type ViewGroup } from '@/views/types/ViewGroup'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { isDefined } from 'twenty-shared/utils'; import { v4 } from 'uuid'; const useViewsSideEffectsOnViewGroups = () => { - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const triggerViewGroupOptimisticEffectAtViewCreation = ({ mainGroupByFieldMetadataId, diff --git a/packages/twenty-front/src/modules/views/view-picker/hooks/useGetAvailableFieldsForCalendar.ts b/packages/twenty-front/src/modules/views/view-picker/hooks/useGetAvailableFieldsForCalendar.ts index b7904259adc..2de29252379 100644 --- a/packages/twenty-front/src/modules/views/view-picker/hooks/useGetAvailableFieldsForCalendar.ts +++ b/packages/twenty-front/src/modules/views/view-picker/hooks/useGetAvailableFieldsForCalendar.ts @@ -1,7 +1,7 @@ import { useCallback } from 'react'; import { useLocation } from 'react-router-dom'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { navigationMemorizedUrlState } from '@/ui/navigation/states/navigationMemorizedUrlState'; import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState'; import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentStateValue'; @@ -15,7 +15,7 @@ export const useGetAvailableFieldsForCalendar = () => { const viewObjectMetadataId = useAtomComponentStateValue( viewObjectMetadataIdComponentState, ); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const setNavigationMemorizedUrl = useSetAtomState( navigationMemorizedUrlState, ); diff --git a/packages/twenty-front/src/modules/views/view-picker/hooks/useGetAvailableFieldsToGroupRecordsBy.ts b/packages/twenty-front/src/modules/views/view-picker/hooks/useGetAvailableFieldsToGroupRecordsBy.ts index a8c195eb411..f47d8422cd4 100644 --- a/packages/twenty-front/src/modules/views/view-picker/hooks/useGetAvailableFieldsToGroupRecordsBy.ts +++ b/packages/twenty-front/src/modules/views/view-picker/hooks/useGetAvailableFieldsToGroupRecordsBy.ts @@ -1,7 +1,7 @@ import { useCallback } from 'react'; import { useLocation } from 'react-router-dom'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { navigationMemorizedUrlState } from '@/ui/navigation/states/navigationMemorizedUrlState'; import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomState'; import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentStateValue'; @@ -16,7 +16,7 @@ export const useGetAvailableFieldsToGroupRecordsBy = () => { const viewObjectMetadataId = useAtomComponentStateValue( viewObjectMetadataIdComponentState, ); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const setNavigationMemorizedUrl = useSetAtomState( navigationMemorizedUrlState, ); diff --git a/packages/twenty-front/src/modules/workflow/hooks/useRunWorkflowRunOpeningInSidePanelEffects.ts b/packages/twenty-front/src/modules/workflow/hooks/useRunWorkflowRunOpeningInSidePanelEffects.ts index 46696f551d0..76128b971f0 100644 --- a/packages/twenty-front/src/modules/workflow/hooks/useRunWorkflowRunOpeningInSidePanelEffects.ts +++ b/packages/twenty-front/src/modules/workflow/hooks/useRunWorkflowRunOpeningInSidePanelEffects.ts @@ -1,6 +1,6 @@ import { useSidePanelWorkflowNavigation } from '@/side-panel/pages/workflow/hooks/useSidePanelWorkflowNavigation'; import { useApolloCoreClient } from '@/object-metadata/hooks/useApolloCoreClient'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { getRecordFromCache } from '@/object-record/cache/utils/getRecordFromCache'; import { useObjectPermissions } from '@/object-record/hooks/useObjectPermissions'; @@ -35,7 +35,7 @@ export const useRunWorkflowRunOpeningInSidePanelEffects = () => { objectMetadataItem: ObjectMetadataItem; recordId: string; }) => { - const objectMetadataItems = store.get(objectMetadataItemsState.atom); + const objectMetadataItems = store.get(objectMetadataItemsSelector.atom); const workflowRunRecord = getRecordFromCache({ objectMetadataItem, diff --git a/packages/twenty-front/src/modules/workflow/hooks/useWorkflowRunUnsafe.ts b/packages/twenty-front/src/modules/workflow/hooks/useWorkflowRunUnsafe.ts deleted file mode 100644 index 36e93db4a70..00000000000 --- a/packages/twenty-front/src/modules/workflow/hooks/useWorkflowRunUnsafe.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { CoreObjectNameSingular } from 'twenty-shared/types'; -import { useFindOneRecord } from '@/object-record/hooks/useFindOneRecord'; -import { type WorkflowRun } from '@/workflow/types/Workflow'; - -export const useWorkflowRunUnsafe = ({ - workflowRunId, -}: { - workflowRunId: string; -}) => { - const { record } = useFindOneRecord({ - objectNameSingular: CoreObjectNameSingular.WorkflowRun, - objectRecordId: workflowRunId, - }); - - return record; -}; diff --git a/packages/twenty-front/src/modules/workflow/workflow-variables/hooks/useStepsOutputSchema.ts b/packages/twenty-front/src/modules/workflow/workflow-variables/hooks/useStepsOutputSchema.ts index 55f74fc2cb7..bf7b2bf5459 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-variables/hooks/useStepsOutputSchema.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-variables/hooks/useStepsOutputSchema.ts @@ -1,4 +1,4 @@ -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { type WorkflowVersion } from '@/workflow/types/Workflow'; import { getStepOutputSchemaFamilyStateKey } from '@/workflow/utils/getStepOutputSchemaFamilyStateKey'; import { getActionIcon } from '@/workflow/workflow-steps/workflow-actions/utils/getActionIcon'; @@ -24,7 +24,7 @@ export const useStepsOutputSchema = () => { const populateStepsOutputSchema = useCallback( (workflowVersion: WorkflowVersion) => { - const objectMetadataItems = store.get(objectMetadataItemsState.atom); + const objectMetadataItems = store.get(objectMetadataItemsSelector.atom); workflowVersion.steps?.forEach((step) => { const stepKey = getStepOutputSchemaFamilyStateKey( diff --git a/packages/twenty-front/src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx b/packages/twenty-front/src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx index ba256ed885e..5105736433e 100644 --- a/packages/twenty-front/src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx +++ b/packages/twenty-front/src/pages/settings/applications/tabs/SettingsApplicationDetailContentTab.tsx @@ -1,4 +1,4 @@ -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { isHiddenSystemField } from '@/object-metadata/utils/isHiddenSystemField'; import { SettingsLogicFunctionsTable } from '@/settings/logic-functions/components/SettingsLogicFunctionsTable'; import { t } from '@lingui/core/macro'; @@ -23,7 +23,7 @@ export const SettingsApplicationDetailContentTab = ({ objects: { id: string }[]; }; }) => { - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const applicationObjectIds = useMemo( () => application?.objects.map((object) => object.id) ?? [], diff --git a/packages/twenty-front/src/pages/settings/applications/tabs/SettingsApplicationPermissionsTab.tsx b/packages/twenty-front/src/pages/settings/applications/tabs/SettingsApplicationPermissionsTab.tsx index 8646be4a1b2..da47f0db0ed 100644 --- a/packages/twenty-front/src/pages/settings/applications/tabs/SettingsApplicationPermissionsTab.tsx +++ b/packages/twenty-front/src/pages/settings/applications/tabs/SettingsApplicationPermissionsTab.tsx @@ -1,4 +1,4 @@ -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { type FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { SettingsRolesQueryEffect } from '@/settings/roles/components/SettingsRolesQueryEffect'; @@ -283,7 +283,7 @@ const MarketplaceRoleEffect = ({ items: ObjectMetadataItem[], ) => void; }) => { - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const setSettingsDraftRole = useSetAtomFamilyState( settingsDraftRoleFamilyState, defaultRole.id, diff --git a/packages/twenty-front/src/pages/settings/applications/tabs/SettingsAvailableApplicationDetailContentTab.tsx b/packages/twenty-front/src/pages/settings/applications/tabs/SettingsAvailableApplicationDetailContentTab.tsx index 61e6da337af..8b20c3d5da4 100644 --- a/packages/twenty-front/src/pages/settings/applications/tabs/SettingsAvailableApplicationDetailContentTab.tsx +++ b/packages/twenty-front/src/pages/settings/applications/tabs/SettingsAvailableApplicationDetailContentTab.tsx @@ -1,4 +1,4 @@ -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { t } from '@lingui/core/macro'; import { useMemo } from 'react'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; @@ -18,7 +18,7 @@ export const SettingsAvailableApplicationDetailContentTab = ({ }: { application: MarketplaceApp; }) => { - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const { objects, fields, logicFunctions, frontComponents } = application; diff --git a/packages/twenty-front/src/pages/settings/data-model/SettingsNewObject.tsx b/packages/twenty-front/src/pages/settings/data-model/SettingsNewObject.tsx index cb529edf975..f9196b2decf 100644 --- a/packages/twenty-front/src/pages/settings/data-model/SettingsNewObject.tsx +++ b/packages/twenty-front/src/pages/settings/data-model/SettingsNewObject.tsx @@ -1,5 +1,5 @@ import { useCreateOneObjectMetadataItem } from '@/object-metadata/hooks/useCreateOneObjectMetadataItem'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { SaveAndCancelButtons } from '@/settings/components/SaveAndCancelButtons/SaveAndCancelButtons'; import { SettingsPageContainer } from '@/settings/components/SettingsPageContainer'; import { SETTINGS_OBJECT_MODEL_IS_LABEL_SYNCED_WITH_NAME_LABEL_DEFAULT_VALUE } from '@/settings/constants/SettingsObjectModel'; @@ -26,7 +26,7 @@ export const SettingsNewObject = () => { const navigate = useNavigateSettings(); const [isLoading, setIsLoading] = useState(false); const { createOneObjectMetadataItem } = useCreateOneObjectMetadataItem(); - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const formConfig = useForm({ mode: 'onChange', diff --git a/packages/twenty-front/src/testing/decorators/ObjectMetadataItemsDecorator.tsx b/packages/twenty-front/src/testing/decorators/ObjectMetadataItemsDecorator.tsx index dc5baaab9e1..07c98b18aa4 100644 --- a/packages/twenty-front/src/testing/decorators/ObjectMetadataItemsDecorator.tsx +++ b/packages/twenty-front/src/testing/decorators/ObjectMetadataItemsDecorator.tsx @@ -8,14 +8,14 @@ import { useSetAtomState } from '@/ui/utilities/state/jotai/hooks/useSetAtomStat import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; import { PreComputedChipGeneratorsProvider } from '@/object-metadata/components/PreComputedChipGeneratorsProvider'; import { useLoadMockedObjectMetadataItems } from '@/object-metadata/hooks/useLoadMockedObjectMetadataItems'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { getRecordFromRecordNode } from '@/object-record/cache/utils/getRecordFromRecordNode'; import { type WorkspaceMember } from '@/workspace-member/types/WorkspaceMember'; import { mockedUserData } from '~/testing/mock-data/users'; import { mockedWorkspaceMemberRecords } from '~/testing/mock-data/generated/data/workspaceMembers/mock-workspaceMembers-data'; export const ObjectMetadataItemsDecorator: Decorator = (Story) => { - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const setCurrentWorkspaceMember = useSetAtomState( currentWorkspaceMemberState, ); diff --git a/packages/twenty-front/src/testing/decorators/RecordTableDecorator.tsx b/packages/twenty-front/src/testing/decorators/RecordTableDecorator.tsx index 7e5682c9d2c..75e2a5bf6cc 100644 --- a/packages/twenty-front/src/testing/decorators/RecordTableDecorator.tsx +++ b/packages/twenty-front/src/testing/decorators/RecordTableDecorator.tsx @@ -5,7 +5,7 @@ import { CommandMenuComponentInstanceContext } from '@/command-menu/states/conte import { MAIN_CONTEXT_STORE_INSTANCE_ID } from '@/context-store/constants/MainContextStoreInstanceId'; import { contextStoreCurrentViewIdComponentState } from '@/context-store/states/contextStoreCurrentViewIdComponentState'; import { labelIdentifierFieldMetadataItemSelector } from '@/object-metadata/states/labelIdentifierFieldMetadataItemSelector'; -import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; +import { objectMetadataItemsSelector } from '@/object-metadata/states/objectMetadataItemsSelector'; import { type ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; import { formatFieldMetadataItemAsColumnDefinition } from '@/object-metadata/utils/formatFieldMetadataItemAsColumnDefinition'; import { RecordComponentInstanceContextsWrapper } from '@/object-record/components/RecordComponentInstanceContextsWrapper'; @@ -103,7 +103,7 @@ const InternalTableContextProviders = ({ children: React.ReactNode; objectMetadataItem: ObjectMetadataItem; }) => { - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const { objectPermissionsByObjectMetadataId } = useObjectPermissions(); const currentRecordFields = useAtomComponentStateValue( @@ -206,7 +206,7 @@ export const RecordTableDecorator: Decorator = (Story, context) => { const { recordTableObjectNameSingular: objectNameSingular } = context.parameters; - const objectMetadataItems = useAtomStateValue(objectMetadataItemsState); + const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const objectMetadataItem = objectMetadataItems.find( (objectMetadataItem) => diff --git a/packages/twenty-front/src/utils/createEventContext.ts b/packages/twenty-front/src/utils/createEventContext.ts deleted file mode 100644 index ca200a5fcdf..00000000000 --- a/packages/twenty-front/src/utils/createEventContext.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { type Context, createContext } from 'react'; - -type ObjectOfFunctions = { - [key: string]: (...args: any[]) => void; -}; - -export type EventContext = - T extends ObjectOfFunctions ? T : never; - -export const createEventContext = (): Context< - EventContext -> => createContext>({} as EventContext);