From da5dfb7a5b7914c9ef72e1c31f1d47ce82f63dac Mon Sep 17 00:00:00 2001 From: nitin <142569587+ehconitin@users.noreply.github.com> Date: Wed, 21 Aug 2024 20:06:04 +0530 Subject: [PATCH] corrected targetableobject being undefined when clicked on create task in command menu (#6635) Issue #6630 It seems this bug is caused by `targetableObjects` being assigned an empty array, which then leads to an error due to it being undefined. I've made some changes that should address the issue, but I would appreciate any feedback or suggestions on alternative solutions. Please let me know if there is a better approach to resolving this. Thank you! https://github.com/user-attachments/assets/d6409798-3320-49b3-834f-2b6888847ed8 --- .../effect-components/PageChangeEffect.tsx | 7 ++- .../hooks/useOpenCreateActivityDrawer.ts | 44 +++++++++++++------ 2 files changed, 35 insertions(+), 16 deletions(-) diff --git a/packages/twenty-front/src/effect-components/PageChangeEffect.tsx b/packages/twenty-front/src/effect-components/PageChangeEffect.tsx index 5dd9c9b2845e..bf083a157e5a 100644 --- a/packages/twenty-front/src/effect-components/PageChangeEffect.tsx +++ b/packages/twenty-front/src/effect-components/PageChangeEffect.tsx @@ -16,10 +16,10 @@ import { AppPath } from '@/types/AppPath'; import { PageHotkeyScope } from '@/types/PageHotkeyScope'; import { SettingsPath } from '@/types/SettingsPath'; import { useSetHotkeyScope } from '@/ui/utilities/hotkey/hooks/useSetHotkeyScope'; +import { useCleanRecoilState } from '~/hooks/useCleanRecoilState'; import { useIsMatchingLocation } from '~/hooks/useIsMatchingLocation'; import { usePageChangeEffectNavigateLocation } from '~/hooks/usePageChangeEffectNavigateLocation'; import { isDefined } from '~/utils/isDefined'; -import { useCleanRecoilState } from '~/hooks/useCleanRecoilState'; // TODO: break down into smaller functions and / or hooks // - moved usePageChangeEffectNavigateLocation into dedicated hook @@ -153,7 +153,10 @@ export const PageChangeEffect = () => { label: 'Create Task', type: CommandType.Create, Icon: IconCheckbox, - onCommandClick: () => openCreateActivity({ targetableObjects: [] }), + onCommandClick: () => + openCreateActivity({ + targetableObjects: [], + }), }, ]); }, [addToCommandMenu, setToInitialCommandMenu, openCreateActivity]); diff --git a/packages/twenty-front/src/modules/activities/hooks/useOpenCreateActivityDrawer.ts b/packages/twenty-front/src/modules/activities/hooks/useOpenCreateActivityDrawer.ts index 74781c52cecd..400c1f398a95 100644 --- a/packages/twenty-front/src/modules/activities/hooks/useOpenCreateActivityDrawer.ts +++ b/packages/twenty-front/src/modules/activities/hooks/useOpenCreateActivityDrawer.ts @@ -68,24 +68,40 @@ export const useOpenCreateActivityDrawer = ({ assigneeId: customAssignee?.id, }); - const targetableObjectRelationIdName = `${targetableObjects[0].targetObjectNameSingular}Id`; - - await createOneActivityTarget({ - taskId: - activityObjectNameSingular === CoreObjectNameSingular.Task - ? activity.id - : undefined, - noteId: - activityObjectNameSingular === CoreObjectNameSingular.Note - ? activity.id - : undefined, - [targetableObjectRelationIdName]: targetableObjects[0].id, - }); + if (targetableObjects.length > 0) { + const targetableObjectRelationIdName = `${targetableObjects[0].targetObjectNameSingular}Id`; + + await createOneActivityTarget({ + taskId: + activityObjectNameSingular === CoreObjectNameSingular.Task + ? activity.id + : undefined, + noteId: + activityObjectNameSingular === CoreObjectNameSingular.Note + ? activity.id + : undefined, + [targetableObjectRelationIdName]: targetableObjects[0].id, + }); + + setActivityTargetableEntityArray(targetableObjects); + } else { + await createOneActivityTarget({ + taskId: + activityObjectNameSingular === CoreObjectNameSingular.Task + ? activity.id + : undefined, + noteId: + activityObjectNameSingular === CoreObjectNameSingular.Note + ? activity.id + : undefined, + }); + + setActivityTargetableEntityArray([]); + } setHotkeyScope(RightDrawerHotkeyScope.RightDrawer, { goto: false }); setViewableRecordId(activity.id); setViewableRecordNameSingular(activityObjectNameSingular); - setActivityTargetableEntityArray(targetableObjects ?? []); openRightDrawer(RightDrawerPages.ViewRecord); setIsUpsertingActivityInDB(false);