From 6898a40ac30c3d60b503ea00423e49fc68540c79 Mon Sep 17 00:00:00 2001 From: Charles Bochet Date: Mon, 24 Mar 2025 15:19:05 +0100 Subject: [PATCH] Fix relation from many notes (#11120) Fixes https://github.com/twentyhq/twenty/issues/3415 --- .../RecordShowRightDrawerOpenRecordButton.tsx | 30 +++-- .../components/ActivityTargetsInlineCell.tsx | 113 +++++++++--------- .../activities/notes/components/NoteCard.tsx | 30 ++--- .../activities/tasks/components/TaskRow.tsx | 22 ++-- .../components/FieldContextProvider.tsx} | 62 +++++----- .../components/FieldContextProvider.tsx | 30 ----- .../__stories__/AddressFieldInput.stories.tsx | 35 +++--- .../__stories__/BooleanFieldInput.stories.tsx | 30 +++-- .../DateTimeFieldInput.stories.tsx | 30 +++-- .../__stories__/NumberFieldInput.stories.tsx | 30 +++-- .../__stories__/RatingFieldInput.stories.tsx | 32 ++--- .../RelationFromManyFieldInput.stories.tsx | 16 ++- .../RelationToOneFieldInput.stories.tsx | 41 ++++--- .../__stories__/TextFieldInput.stories.tsx | 32 ++--- .../components/MultipleRecordPicker.tsx | 2 +- .../hooks/useOpenRecordTableCellV2.ts | 2 +- .../components/ShowPageSubContainer.tsx | 11 +- 17 files changed, 269 insertions(+), 279 deletions(-) rename packages/twenty-front/src/modules/object-record/{hooks/useFieldContext.tsx => record-field/components/FieldContextProvider.tsx} (61%) delete mode 100644 packages/twenty-front/src/modules/object-record/record-field/meta-types/components/FieldContextProvider.tsx diff --git a/packages/twenty-front/src/modules/action-menu/components/RecordShowRightDrawerOpenRecordButton.tsx b/packages/twenty-front/src/modules/action-menu/components/RecordShowRightDrawerOpenRecordButton.tsx index 367872737..f4ff71984 100644 --- a/packages/twenty-front/src/modules/action-menu/components/RecordShowRightDrawerOpenRecordButton.tsx +++ b/packages/twenty-front/src/modules/action-menu/components/RecordShowRightDrawerOpenRecordButton.tsx @@ -3,6 +3,7 @@ import { useCommandMenu } from '@/command-menu/hooks/useCommandMenu'; import { CommandMenuPageComponentInstanceContext } from '@/command-menu/states/contexts/CommandMenuPageComponentInstanceContext'; import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; import { getLinkToShowPage } from '@/object-metadata/utils/getLinkToShowPage'; +import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState'; import { ObjectRecord } from '@/object-record/types/ObjectRecord'; import { AppPath } from '@/types/AppPath'; import { getShowPageTabListComponentId } from '@/ui/layout/show-page/utils/getShowPageTabListComponentId'; @@ -15,6 +16,8 @@ import { useSetRecoilComponentStateV2 } from '@/ui/utilities/state/component-sta import styled from '@emotion/styled'; import { useCallback } from 'react'; import { Link } from 'react-router-dom'; +import { useRecoilValue } from 'recoil'; +import { isDefined } from 'twenty-shared/utils'; import { Button, IconBrowserMaximize, getOsControlSymbol } from 'twenty-ui'; import { useNavigateApp } from '~/hooks/useNavigateApp'; const StyledLink = styled(Link)` @@ -23,13 +26,16 @@ const StyledLink = styled(Link)` type RecordShowRightDrawerOpenRecordButtonProps = { objectNameSingular: string; - record: ObjectRecord; + recordId: string; }; export const RecordShowRightDrawerOpenRecordButton = ({ objectNameSingular, - record, + recordId, }: RecordShowRightDrawerOpenRecordButtonProps) => { + const record = useRecoilValue( + recordStoreFamilyState(recordId), + ); const { closeCommandMenu } = useCommandMenu(); const commandMenuPageComponentInstance = useComponentInstanceStateContext( @@ -38,7 +44,7 @@ export const RecordShowRightDrawerOpenRecordButton = ({ const tabListComponentId = getShowPageTabListComponentId({ pageId: commandMenuPageComponentInstance?.instanceId, - targetObjectId: record.id, + targetObjectId: recordId, }); const activeTabIdInRightDrawer = useRecoilComponentValueV2( @@ -47,7 +53,7 @@ export const RecordShowRightDrawerOpenRecordButton = ({ ); const tabListComponentIdInRecordPage = getShowPageTabListComponentId({ - targetObjectId: record.id, + targetObjectId: recordId, }); const setActiveTabIdInRecordPage = useSetRecoilComponentStateV2( @@ -55,8 +61,6 @@ export const RecordShowRightDrawerOpenRecordButton = ({ tabListComponentIdInRecordPage, ); - const to = getLinkToShowPage(objectNameSingular, record); - const navigate = useNavigateApp(); const handleOpenRecord = useCallback(() => { @@ -72,7 +76,7 @@ export const RecordShowRightDrawerOpenRecordButton = ({ navigate(AppPath.RecordShowPage, { objectNameSingular, - objectRecordId: record.id, + objectRecordId: recordId, }); closeCommandMenu(); @@ -81,7 +85,7 @@ export const RecordShowRightDrawerOpenRecordButton = ({ closeCommandMenu, navigate, objectNameSingular, - record.id, + recordId, setActiveTabIdInRecordPage, ]); @@ -89,16 +93,22 @@ export const RecordShowRightDrawerOpenRecordButton = ({ ['ctrl+Enter,meta+Enter'], handleOpenRecord, AppHotkeyScope.CommandMenuOpen, - [closeCommandMenu, navigate, objectNameSingular, record.id], + [closeCommandMenu, navigate, objectNameSingular, recordId], ); useScopedHotkeys( ['ctrl+Enter,meta+Enter'], handleOpenRecord, CommandMenuActionMenuDropdownHotkeyScope.CommandMenuActionMenuDropdown, - [closeCommandMenu, navigate, objectNameSingular, record.id], + [closeCommandMenu, navigate, objectNameSingular, recordId], ); + if (!isDefined(record)) { + return null; + } + + const to = getLinkToShowPage(objectNameSingular, record); + return (