diff --git a/packages/twenty-front/src/modules/command-menu-item/record/single-record/components/NavigateToNextRecordSingleRecordCommand.tsx b/packages/twenty-front/src/modules/command-menu-item/record/single-record/components/NavigateToNextRecordSingleRecordCommand.tsx index 682e00a4371..ec9f32aa631 100644 --- a/packages/twenty-front/src/modules/command-menu-item/record/single-record/components/NavigateToNextRecordSingleRecordCommand.tsx +++ b/packages/twenty-front/src/modules/command-menu-item/record/single-record/components/NavigateToNextRecordSingleRecordCommand.tsx @@ -1,17 +1,21 @@ import { Command } from '@/command-menu-item/display/components/Command'; -import { useSelectedRecordIdOrThrow } from '@/command-menu-item/record/single-record/hooks/useSelectedRecordIdOrThrow'; +import { useSelectedRecordIdOrNull } from '@/command-menu-item/record/single-record/hooks/useSelectedRecordIdOrNull'; import { useContextStoreObjectMetadataItemOrThrow } from '@/context-store/hooks/useContextStoreObjectMetadataItemOrThrow'; import { useRecordShowPagePagination } from '@/object-record/record-show/hooks/useRecordShowPagePagination'; export const NavigateToNextRecordSingleRecordCommand = () => { const { objectMetadataItem } = useContextStoreObjectMetadataItemOrThrow(); - const recordId = useSelectedRecordIdOrThrow(); + const recordId = useSelectedRecordIdOrNull(); const { navigateToNextRecord } = useRecordShowPagePagination( objectMetadataItem.nameSingular, - recordId, + recordId ?? '', ); + if (!recordId) { + return null; + } + return ; }; diff --git a/packages/twenty-front/src/modules/command-menu-item/record/single-record/components/NavigateToPreviousRecordSingleRecordCommand.tsx b/packages/twenty-front/src/modules/command-menu-item/record/single-record/components/NavigateToPreviousRecordSingleRecordCommand.tsx index 15b7e7d0f96..5f4cc85db0a 100644 --- a/packages/twenty-front/src/modules/command-menu-item/record/single-record/components/NavigateToPreviousRecordSingleRecordCommand.tsx +++ b/packages/twenty-front/src/modules/command-menu-item/record/single-record/components/NavigateToPreviousRecordSingleRecordCommand.tsx @@ -1,17 +1,21 @@ import { Command } from '@/command-menu-item/display/components/Command'; -import { useSelectedRecordIdOrThrow } from '@/command-menu-item/record/single-record/hooks/useSelectedRecordIdOrThrow'; +import { useSelectedRecordIdOrNull } from '@/command-menu-item/record/single-record/hooks/useSelectedRecordIdOrNull'; import { useContextStoreObjectMetadataItemOrThrow } from '@/context-store/hooks/useContextStoreObjectMetadataItemOrThrow'; import { useRecordShowPagePagination } from '@/object-record/record-show/hooks/useRecordShowPagePagination'; export const NavigateToPreviousRecordSingleRecordCommand = () => { const { objectMetadataItem } = useContextStoreObjectMetadataItemOrThrow(); - const recordId = useSelectedRecordIdOrThrow(); + const recordId = useSelectedRecordIdOrNull(); const { navigateToPreviousRecord } = useRecordShowPagePagination( objectMetadataItem.nameSingular, - recordId, + recordId ?? '', ); + if (!recordId) { + return null; + } + return ; }; diff --git a/packages/twenty-front/src/modules/command-menu-item/record/single-record/hooks/useSelectedRecordIdOrNull.tsx b/packages/twenty-front/src/modules/command-menu-item/record/single-record/hooks/useSelectedRecordIdOrNull.tsx new file mode 100644 index 00000000000..566bb63b981 --- /dev/null +++ b/packages/twenty-front/src/modules/command-menu-item/record/single-record/hooks/useSelectedRecordIdOrNull.tsx @@ -0,0 +1,18 @@ +import { contextStoreTargetedRecordsRuleComponentState } from '@/context-store/states/contextStoreTargetedRecordsRuleComponentState'; +import { useAtomComponentStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomComponentStateValue'; + +export const useSelectedRecordIdOrNull = (): string | null => { + const contextStoreTargetedRecordsRule = useAtomComponentStateValue( + contextStoreTargetedRecordsRuleComponentState, + ); + + if ( + contextStoreTargetedRecordsRule.mode === 'exclusion' || + (contextStoreTargetedRecordsRule.mode === 'selection' && + contextStoreTargetedRecordsRule.selectedRecordIds.length === 0) + ) { + return null; + } + + return contextStoreTargetedRecordsRule.selectedRecordIds[0]; +};