diff --git a/packages/twenty-front/src/modules/activities/hooks/useOpenCreateActivityDrawer.ts b/packages/twenty-front/src/modules/activities/hooks/useOpenCreateActivityDrawer.ts index b0581ec5c..f55331f0a 100644 --- a/packages/twenty-front/src/modules/activities/hooks/useOpenCreateActivityDrawer.ts +++ b/packages/twenty-front/src/modules/activities/hooks/useOpenCreateActivityDrawer.ts @@ -13,6 +13,7 @@ import { useRightDrawer } from '@/ui/layout/right-drawer/hooks/useRightDrawer'; import { RightDrawerHotkeyScope } from '@/ui/layout/right-drawer/types/RightDrawerHotkeyScope'; import { RightDrawerPages } from '@/ui/layout/right-drawer/types/RightDrawerPages'; import { useSetHotkeyScope } from '@/ui/utilities/hotkey/hooks/useSetHotkeyScope'; +import { isNonEmptyArray } from '~/utils/isNonEmptyArray'; import { activityTargetableEntityArrayState } from '../states/activityTargetableEntityArrayState'; import { viewableActivityIdState } from '../states/viewableActivityIdState'; @@ -79,7 +80,9 @@ export const useOpenCreateActivityDrawer = () => { }, ); - await createManyActivityTargets(activityTargetsToCreate); + if (isNonEmptyArray(activityTargetsToCreate)) { + await createManyActivityTargets(activityTargetsToCreate); + } setHotkeyScope(RightDrawerHotkeyScope.RightDrawer, { goto: false }); setViewableActivityId(createdActivity.id); diff --git a/packages/twenty-front/src/modules/object-record/hooks/useGenerateFindManyRecordsForMultipleMetadataItemsQuery.ts b/packages/twenty-front/src/modules/object-record/hooks/useGenerateFindManyRecordsForMultipleMetadataItemsQuery.ts index 2c8de3258..fa95b5e5c 100644 --- a/packages/twenty-front/src/modules/object-record/hooks/useGenerateFindManyRecordsForMultipleMetadataItemsQuery.ts +++ b/packages/twenty-front/src/modules/object-record/hooks/useGenerateFindManyRecordsForMultipleMetadataItemsQuery.ts @@ -2,6 +2,7 @@ import { gql } from '@apollo/client'; import { useMapFieldMetadataToGraphQLQuery } from '@/object-metadata/hooks/useMapFieldMetadataToGraphQLQuery'; import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { isNonEmptyArray } from '~/utils/isNonEmptyArray'; import { capitalize } from '~/utils/string/capitalize'; export const useGenerateFindManyRecordsForMultipleMetadataItemsQuery = ({ @@ -17,6 +18,10 @@ export const useGenerateFindManyRecordsForMultipleMetadataItemsQuery = ({ ({ nameSingular }) => capitalize(nameSingular), ); + if (!isNonEmptyArray(capitalizedObjectNameSingulars)) { + return null; + } + const filterPerMetadataItemArray = capitalizedObjectNameSingulars .map( (capitalizedObjectNameSingular) => diff --git a/packages/twenty-front/src/modules/object-record/relation-picker/hooks/useMultiObjectSearchMatchesSearchFilterAndSelectedItemsQuery.ts b/packages/twenty-front/src/modules/object-record/relation-picker/hooks/useMultiObjectSearchMatchesSearchFilterAndSelectedItemsQuery.ts index a3b5ac363..98b48f2aa 100644 --- a/packages/twenty-front/src/modules/object-record/relation-picker/hooks/useMultiObjectSearchMatchesSearchFilterAndSelectedItemsQuery.ts +++ b/packages/twenty-front/src/modules/object-record/relation-picker/hooks/useMultiObjectSearchMatchesSearchFilterAndSelectedItemsQuery.ts @@ -2,6 +2,7 @@ import { useQuery } from '@apollo/client'; import { isNonEmptyArray } from '@sniptt/guards'; import { useRecoilValue } from 'recoil'; +import { EMPTY_QUERY } from '@/object-metadata/hooks/useObjectMetadataItem'; import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; import { useGenerateFindManyRecordsForMultipleMetadataItemsQuery } from '@/object-record/hooks/useGenerateFindManyRecordsForMultipleMetadataItemsQuery'; import { useLimitPerMetadataItem } from '@/object-record/relation-picker/hooks/useLimitPerMetadataItem'; @@ -91,13 +92,17 @@ export const useMultiObjectSearchMatchesSearchFilterAndSelectedItemsQuery = ({ const { loading: selectedAndMatchesSearchFilterObjectRecordsLoading, data: selectedAndMatchesSearchFilterObjectRecordsQueryResult, - } = useQuery(multiSelectQueryForSelectedIds, { - variables: { - ...selectedAndMatchesSearchFilterTextFilterPerMetadataItem, - ...orderByFieldPerMetadataItem, - ...limitPerMetadataItem, + } = useQuery( + multiSelectQueryForSelectedIds ?? EMPTY_QUERY, + { + variables: { + ...selectedAndMatchesSearchFilterTextFilterPerMetadataItem, + ...orderByFieldPerMetadataItem, + ...limitPerMetadataItem, + }, + skip: !isDefined(multiSelectQueryForSelectedIds), }, - }); + ); const { objectRecordForSelectArray: selectedAndMatchesSearchFilterObjectRecords, diff --git a/packages/twenty-front/src/modules/object-record/relation-picker/hooks/useMultiObjectSearchMatchesSearchFilterAndToSelectQuery.ts b/packages/twenty-front/src/modules/object-record/relation-picker/hooks/useMultiObjectSearchMatchesSearchFilterAndToSelectQuery.ts index 00894cd56..b61437a50 100644 --- a/packages/twenty-front/src/modules/object-record/relation-picker/hooks/useMultiObjectSearchMatchesSearchFilterAndToSelectQuery.ts +++ b/packages/twenty-front/src/modules/object-record/relation-picker/hooks/useMultiObjectSearchMatchesSearchFilterAndToSelectQuery.ts @@ -2,6 +2,7 @@ import { useQuery } from '@apollo/client'; import { isNonEmptyArray } from '@sniptt/guards'; import { useRecoilValue } from 'recoil'; +import { EMPTY_QUERY } from '@/object-metadata/hooks/useObjectMetadataItem'; import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; import { useGenerateFindManyRecordsForMultipleMetadataItemsQuery } from '@/object-record/hooks/useGenerateFindManyRecordsForMultipleMetadataItemsQuery'; @@ -108,12 +109,13 @@ export const useMultiObjectSearchMatchesSearchFilterAndToSelectQuery = ({ const { loading: toSelectAndMatchesSearchFilterObjectRecordsLoading, data: toSelectAndMatchesSearchFilterObjectRecordsQueryResult, - } = useQuery(multiSelectQuery, { + } = useQuery(multiSelectQuery ?? EMPTY_QUERY, { variables: { ...objectRecordsToSelectAndMatchesSearchFilterTextFilterPerMetadataItem, ...orderByFieldPerMetadataItem, ...limitPerMetadataItem, }, + skip: !isDefined(multiSelectQuery), }); const { diff --git a/packages/twenty-front/src/modules/object-record/relation-picker/hooks/useMultiObjectSearchSelectedItemsQuery.ts b/packages/twenty-front/src/modules/object-record/relation-picker/hooks/useMultiObjectSearchSelectedItemsQuery.ts index 8869c24b7..f522d66a0 100644 --- a/packages/twenty-front/src/modules/object-record/relation-picker/hooks/useMultiObjectSearchSelectedItemsQuery.ts +++ b/packages/twenty-front/src/modules/object-record/relation-picker/hooks/useMultiObjectSearchSelectedItemsQuery.ts @@ -1,4 +1,5 @@ import { useQuery } from '@apollo/client'; +import { gql } from '@apollo/client'; import { isNonEmptyArray } from '@sniptt/guards'; import { useRecoilValue } from 'recoil'; @@ -14,6 +15,12 @@ import { useOrderByFieldPerMetadataItem } from '@/object-record/relation-picker/ import { isDefined } from '~/utils/isDefined'; import { capitalize } from '~/utils/string/capitalize'; +export const EMPTY_QUERY = gql` + query Empty { + __typename + } +`; + export const useMultiObjectSearchSelectedItemsQuery = ({ selectedObjectRecordIds, }: { @@ -68,13 +75,17 @@ export const useMultiObjectSearchSelectedItemsQuery = ({ const { loading: selectedObjectRecordsLoading, data: selectedObjectRecordsQueryResult, - } = useQuery(multiSelectQueryForSelectedIds, { - variables: { - ...selectedIdFilterPerMetadataItem, - ...orderByFieldPerMetadataItem, - ...limitPerMetadataItem, + } = useQuery( + multiSelectQueryForSelectedIds ?? EMPTY_QUERY, + { + variables: { + ...selectedIdFilterPerMetadataItem, + ...orderByFieldPerMetadataItem, + ...limitPerMetadataItem, + }, + skip: !isDefined(multiSelectQueryForSelectedIds), }, - }); + ); const { objectRecordForSelectArray: selectedObjectRecords } = useMultiObjectRecordsQueryResultFormattedAsObjectRecordForSelectArray({