diff --git a/packages/twenty-front/src/modules/activities/emails/graphql/operation-signatures/factories/fetchAllThreadMessagesOperationSignatureFactory.ts b/packages/twenty-front/src/modules/activities/emails/graphql/operation-signatures/factories/fetchAllThreadMessagesOperationSignatureFactory.ts new file mode 100644 index 000000000..619a99b0d --- /dev/null +++ b/packages/twenty-front/src/modules/activities/emails/graphql/operation-signatures/factories/fetchAllThreadMessagesOperationSignatureFactory.ts @@ -0,0 +1,28 @@ +import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; +import { RecordGqlOperationSignatureFactory } from '@/object-record/graphql/types/RecordGqlOperationSignatureFactory'; + +export const fetchAllThreadMessagesOperationSignatureFactory: RecordGqlOperationSignatureFactory = + ({ messageThreadId }: { messageThreadId: string }) => ({ + objectNameSingular: CoreObjectNameSingular.Message, + variables: { + filter: { + messageThreadId: { + eq: messageThreadId || '', + }, + }, + orderBy: { + receivedAt: 'AscNullsLast', + }, + limit: 10, + }, + fields: { + id: true, + __typename: true, + createdAt: true, + headerMessageId: true, + subject: true, + text: true, + receivedAt: true, + messageParticipants: true, + }, + }); diff --git a/packages/twenty-front/src/modules/activities/emails/right-drawer/hooks/useRightDrawerEmailThread.ts b/packages/twenty-front/src/modules/activities/emails/right-drawer/hooks/useRightDrawerEmailThread.ts index 68b3f5657..dce19bb82 100644 --- a/packages/twenty-front/src/modules/activities/emails/right-drawer/hooks/useRightDrawerEmailThread.ts +++ b/packages/twenty-front/src/modules/activities/emails/right-drawer/hooks/useRightDrawerEmailThread.ts @@ -3,9 +3,9 @@ import { useApolloClient } from '@apollo/client'; import gql from 'graphql-tag'; import { useRecoilValue } from 'recoil'; +import { fetchAllThreadMessagesOperationSignatureFactory } from '@/activities/emails/graphql/operation-signatures/factories/fetchAllThreadMessagesOperationSignatureFactory'; import { viewableEmailThreadIdState } from '@/activities/emails/states/viewableEmailThreadIdState'; import { EmailThreadMessage as EmailThreadMessageType } from '@/activities/emails/types/EmailThreadMessage'; -import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords'; export const useRightDrawerEmailThread = () => { @@ -23,21 +23,22 @@ export const useRightDrawerEmailThread = () => { `, }); + const FETCH_ALL_MESSAGES_OPERATION_SIGNATURE = + fetchAllThreadMessagesOperationSignatureFactory({ + messageThreadId: viewableEmailThreadId, + }); + const { records: messages, loading, fetchMoreRecords, } = useFindManyRecords({ - limit: 10, - filter: { - messageThreadId: { - eq: viewableEmailThreadId || '', - }, - }, - objectNameSingular: CoreObjectNameSingular.Message, - orderBy: { - receivedAt: 'AscNullsLast', - }, + limit: FETCH_ALL_MESSAGES_OPERATION_SIGNATURE.variables.limit, + filter: FETCH_ALL_MESSAGES_OPERATION_SIGNATURE.variables.filter, + objectNameSingular: + FETCH_ALL_MESSAGES_OPERATION_SIGNATURE.objectNameSingular, + orderBy: FETCH_ALL_MESSAGES_OPERATION_SIGNATURE.variables.orderBy, + recordGqlFields: FETCH_ALL_MESSAGES_OPERATION_SIGNATURE.fields, skip: !viewableEmailThreadId, }); diff --git a/packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountsRowDropdownMenu.tsx b/packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountsRowDropdownMenu.tsx index 8e5afcec6..883d37cb8 100644 --- a/packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountsRowDropdownMenu.tsx +++ b/packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountsRowDropdownMenu.tsx @@ -17,6 +17,7 @@ import { DropdownMenu } from '@/ui/layout/dropdown/components/DropdownMenu'; import { DropdownMenuItemsContainer } from '@/ui/layout/dropdown/components/DropdownMenuItemsContainer'; import { useDropdown } from '@/ui/layout/dropdown/hooks/useDropdown'; import { MenuItem } from '@/ui/navigation/menu-item/components/MenuItem'; +import { useIsFeatureEnabled } from '@/workspace/hooks/useIsFeatureEnabled'; type SettingsAccountsRowDropdownMenuProps = { account: ConnectedAccount; @@ -38,6 +39,8 @@ export const SettingsAccountsRowDropdownMenu = ({ const { triggerGoogleApisOAuth } = useTriggerGoogleApisOAuth(); + const isCalendarEnabled = useIsFeatureEnabled('IS_CALENDAR_ENABLED'); + return ( - { - navigate( - `/settings/accounts/calendars/${account.calendarChannels[0].id}`, - ); - closeDropdown(); - }} - /> + {isCalendarEnabled && ( + { + navigate( + `/settings/accounts/calendars/${account.calendarChannels[0].id}`, + ); + closeDropdown(); + }} + /> + )} {account.authFailedAt && ( { const currentWorkspaceMember = useRecoilValue(currentWorkspaceMemberState); + const { objectMetadataItem } = useObjectMetadataItem({ + objectNameSingular: CoreObjectNameSingular.ConnectedAccount, + }); + const { records: accounts, loading } = useFindManyRecords({ objectNameSingular: 'connectedAccount', filter: { @@ -25,6 +32,7 @@ export const SettingsAccounts = () => { eq: currentWorkspaceMember?.id, }, }, + recordGqlFields: generateDepthOneRecordGqlFields({ objectMetadataItem }), }); const isBlocklistEnabled = useIsFeatureEnabled('IS_BLOCKLIST_ENABLED');