Fix missing ObjectRecordId param (#11721)

# Introduction
Fixes https://github.com/twentyhq/twenty/issues/11718

From having
[noUncheckedIndexedAccess](https://www.typescriptlang.org/tsconfig/#noUncheckedIndexedAccess)
set to false we have a flakiness resulting in a such bug right here as
the below operation can return `undefined` but not type as it should:
```ts
  const recordId = allRecordIds[position.row];
```

About to create a Tech project about the topic, activating the flag ends
in 1500 typescript erros from the style solution compilation ( which
means can contains several duplicated errors )
This commit is contained in:
Paul Rastoin
2025-04-24 16:49:56 +02:00
committed by GitHub
parent 5343dd62d6
commit 8b63d45b70
3 changed files with 10 additions and 10 deletions

View File

@ -11,6 +11,7 @@ import { hiddenRecordGroupIdsComponentSelector } from '@/object-record/record-gr
import { useHandleRecordGroupField } from '@/object-record/record-index/hooks/useHandleRecordGroupField';
import { SettingsPath } from '@/types/SettingsPath';
import { DropdownMenuHeader } from '@/ui/layout/dropdown/components/DropdownMenuHeader/DropdownMenuHeader';
import { DropdownMenuHeaderLeftComponent } from '@/ui/layout/dropdown/components/DropdownMenuHeader/internal/DropdownMenuHeaderLeftComponent';
import { DropdownMenuItemsContainer } from '@/ui/layout/dropdown/components/DropdownMenuItemsContainer';
import { DropdownMenuSeparator } from '@/ui/layout/dropdown/components/DropdownMenuSeparator';
import { navigationMemorizedUrlState } from '@/ui/navigation/states/navigationMemorizedUrlState';
@ -19,9 +20,6 @@ import { ViewType } from '@/views/types/ViewType';
import { useLingui } from '@lingui/react/macro';
import { useLocation } from 'react-router-dom';
import { useSetRecoilState } from 'recoil';
import { FieldMetadataType } from '~/generated-metadata/graphql';
import { getSettingsPath } from '~/utils/navigation/getSettingsPath';
import { DropdownMenuHeaderLeftComponent } from '@/ui/layout/dropdown/components/DropdownMenuHeader/internal/DropdownMenuHeaderLeftComponent';
import { isDefined } from 'twenty-shared/utils';
import { IconChevronLeft, IconSettings, useIcons } from 'twenty-ui/display';
import {
@ -29,6 +27,8 @@ import {
MenuItemSelect,
UndecoratedLink,
} from 'twenty-ui/navigation';
import { FieldMetadataType } from '~/generated-metadata/graphql';
import { getSettingsPath } from '~/utils/navigation/getSettingsPath';
export const ObjectOptionsDropdownRecordGroupFieldsContent = () => {
const { t } = useLingui();
@ -116,7 +116,7 @@ export const ObjectOptionsDropdownRecordGroupFieldsContent = () => {
/>
}
>
Group by
{t`Group by`}
</DropdownMenuHeader>
<StyledInput
autoFocus

View File

@ -134,7 +134,7 @@ export const useHandleRecordGroupField = () => {
return;
}
const view = await getViewFromPrefetchState(currentViewId);
const view = getViewFromPrefetchState(currentViewId);
if (isUndefinedOrNull(view)) {
return;

View File

@ -8,6 +8,7 @@ import { visibleTableColumnsComponentSelector } from '@/object-record/record-tab
import { TableCellPosition } from '@/object-record/record-table/types/TableCellPosition';
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValueV2';
import ReactDOM from 'react-dom';
import { isDefined } from 'twenty-shared/utils';
export const RecordTableCellPortalWrapper = ({
position,
@ -16,9 +17,9 @@ export const RecordTableCellPortalWrapper = ({
position: TableCellPosition;
children: React.ReactNode;
}) => {
const anchorElement = document.body.querySelector(
const anchorElement = document.body.querySelector<HTMLAnchorElement>(
`#record-table-cell-${position.column}-${position.row}`,
) as HTMLElement;
);
const allRecordIds = useRecoilComponentValueV2(
recordIndexAllRecordIdsComponentSelector,
@ -30,12 +31,11 @@ export const RecordTableCellPortalWrapper = ({
visibleTableColumnsComponentSelector,
);
if (!anchorElement) {
const recordId = allRecordIds.at(position.row);
if (!isDefined(anchorElement) || !isDefined(recordId)) {
return null;
}
const recordId = allRecordIds[position.row];
return ReactDOM.createPortal(
<RecordTableRowContextProvider
value={{