diff --git a/packages/twenty-front/src/modules/activities/tasks/hooks/__tests__/useCompleteTask.test.tsx b/packages/twenty-front/src/modules/activities/tasks/hooks/__tests__/useCompleteTask.test.tsx index 718b27f3d..02db10661 100644 --- a/packages/twenty-front/src/modules/activities/tasks/hooks/__tests__/useCompleteTask.test.tsx +++ b/packages/twenty-front/src/modules/activities/tasks/hooks/__tests__/useCompleteTask.test.tsx @@ -91,6 +91,7 @@ const mocks: MockedResponse[] = [ createdAt deletedAt favoriteFolderId + forWorkspaceMemberId id noteId opportunityId @@ -104,7 +105,6 @@ const mocks: MockedResponse[] = [ workflowId workflowRunId workflowVersionId - workspaceMemberId } } } diff --git a/packages/twenty-front/src/modules/favorites/favorite-folder-picker/components/FavoriteFolderPickerEffect.tsx b/packages/twenty-front/src/modules/favorites/favorite-folder-picker/components/FavoriteFolderPickerEffect.tsx index 43edd1bb0..87313a268 100644 --- a/packages/twenty-front/src/modules/favorites/favorite-folder-picker/components/FavoriteFolderPickerEffect.tsx +++ b/packages/twenty-front/src/modules/favorites/favorite-folder-picker/components/FavoriteFolderPickerEffect.tsx @@ -72,7 +72,7 @@ export const FavoriteFolderPickerEffect = ({ const checkedFolderIds = favorites .filter( (favorite) => - favorite.recordId === targetId && favorite.workspaceMemberId, + favorite.recordId === targetId && favorite.forWorkspaceMemberId, ) .map((favorite) => favorite.favoriteFolderId || 'no-folder'); setCheckedState(checkedFolderIds); diff --git a/packages/twenty-front/src/modules/favorites/hooks/__mocks__/useFavorites.ts b/packages/twenty-front/src/modules/favorites/hooks/__mocks__/useFavorites.ts index 77d581802..99c18e06b 100644 --- a/packages/twenty-front/src/modules/favorites/hooks/__mocks__/useFavorites.ts +++ b/packages/twenty-front/src/modules/favorites/hooks/__mocks__/useFavorites.ts @@ -25,7 +25,7 @@ export const initialFavorites: Favorite[] = [ recordId: '1', person: { id: '1', name: 'John Doe' }, company: { id: '2', name: 'ABC Corp' }, - workspaceMemberId: '1', + forWorkspaceMemberId: '1', favoriteFolderId: '1', }, { @@ -40,7 +40,7 @@ export const initialFavorites: Favorite[] = [ recordId: '1', person: { id: '3', name: 'Jane Doe' }, company: { id: '4', name: 'Company Test' }, - workspaceMemberId: '1', + forWorkspaceMemberId: '1', favoriteFolderId: '1', }, @@ -54,7 +54,7 @@ export const initialFavorites: Favorite[] = [ avatarType: 'squared' as AvatarType, link: 'example.com', recordId: '1', - workspaceMemberId: '1', + forWorkspaceMemberId: '1', favoriteFolderId: '1', }, ]; @@ -69,7 +69,7 @@ export const sortedFavorites = [ labelIdentifier: ' ', link: '/object/person/1', objectNameSingular: 'person', - workspaceMemberId: '1', + forWorkspaceMemberId: '1', favoriteFolderId: '1', __typename: 'Favorite', }, @@ -82,7 +82,7 @@ export const sortedFavorites = [ labelIdentifier: ' ', link: '/object/person/3', objectNameSingular: 'person', - workspaceMemberId: '1', + forWorkspaceMemberId: '1', favoriteFolderId: '1', __typename: 'Favorite', }, @@ -96,7 +96,7 @@ export const sortedFavorites = [ recordId: '1', avatarType: 'squared', favoriteFolderId: '1', - workspaceMemberId: '1', + forWorkspaceMemberId: '1', __typename: 'Favorite', }, ]; @@ -176,6 +176,26 @@ mutation UpdateOneFavorite( updatedAt } favoriteFolderId + forWorkspaceMember { + __typename + avatarUrl + colorScheme + createdAt + dateFormat + deletedAt + id + locale + name { + firstName + lastName + } + timeFormat + timeZone + updatedAt + userEmail + userId + } + forWorkspaceMemberId id note { __typename @@ -446,26 +466,6 @@ mutation UpdateOneFavorite( workflowId } workflowVersionId - workspaceMember { - __typename - avatarUrl - colorScheme - createdAt - dateFormat - deletedAt - id - locale - name { - firstName - lastName - } - timeFormat - timeZone - updatedAt - userEmail - userId - } - workspaceMemberId } } `; @@ -545,6 +545,26 @@ export const mocks = [ updatedAt } favoriteFolderId + forWorkspaceMember { + __typename + avatarUrl + colorScheme + createdAt + dateFormat + deletedAt + id + locale + name { + firstName + lastName + } + timeFormat + timeZone + updatedAt + userEmail + userId + } + forWorkspaceMemberId id note { __typename @@ -815,26 +835,6 @@ export const mocks = [ workflowId } workflowVersionId - workspaceMember { - __typename - avatarUrl - colorScheme - createdAt - dateFormat - deletedAt - id - locale - name { - firstName - lastName - } - timeFormat - timeZone - updatedAt - userEmail - userId - } - workspaceMemberId } } `, @@ -842,7 +842,7 @@ export const mocks = [ input: { personId: favoriteTargetObjectId, position: 1, - workspaceMemberId: '1', + forWorkspaceMemberId: '1', favoriteFolderId: undefined, id: mockId, }, diff --git a/packages/twenty-front/src/modules/favorites/hooks/useCreateFavorite.ts b/packages/twenty-front/src/modules/favorites/hooks/useCreateFavorite.ts index edb7311bf..5d4234b1e 100644 --- a/packages/twenty-front/src/modules/favorites/hooks/useCreateFavorite.ts +++ b/packages/twenty-front/src/modules/favorites/hooks/useCreateFavorite.ts @@ -17,7 +17,7 @@ export const useCreateFavorite = () => { const relevantFavorites = favoriteFolderId ? favorites.filter((fav) => fav.favoriteFolderId === favoriteFolderId) : favorites.filter( - (fav) => !fav.favoriteFolderId && fav.workspaceMemberId, + (fav) => !fav.favoriteFolderId && fav.forWorkspaceMemberId, ); const maxPosition = Math.max( @@ -28,7 +28,7 @@ export const useCreateFavorite = () => { createOneFavorite({ [`${targetObjectNameSingular}Id`]: targetRecord.id, position: maxPosition + 1, - workspaceMemberId: currentWorkspaceMemberId, + forWorkspaceMemberId: currentWorkspaceMemberId, favoriteFolderId, }); }; diff --git a/packages/twenty-front/src/modules/favorites/hooks/useFavorites.ts b/packages/twenty-front/src/modules/favorites/hooks/useFavorites.ts index 6662fd71e..9874782de 100644 --- a/packages/twenty-front/src/modules/favorites/hooks/useFavorites.ts +++ b/packages/twenty-front/src/modules/favorites/hooks/useFavorites.ts @@ -27,7 +27,7 @@ export const useFavorites = () => { favoriteObjectMetadataItem.fields.filter( (fieldMetadataItem) => fieldMetadataItem.type === FieldMetadataType.RELATION && - fieldMetadataItem.name !== 'workspaceMember' && + fieldMetadataItem.name !== 'forWorkspaceMember' && fieldMetadataItem.name !== 'favoriteFolder', ), [favoriteObjectMetadataItem.fields], diff --git a/packages/twenty-front/src/modules/favorites/hooks/useFavoritesMetadata.ts b/packages/twenty-front/src/modules/favorites/hooks/useFavoritesMetadata.ts index e6c4e9b29..2ef9ce1ce 100644 --- a/packages/twenty-front/src/modules/favorites/hooks/useFavoritesMetadata.ts +++ b/packages/twenty-front/src/modules/favorites/hooks/useFavoritesMetadata.ts @@ -18,7 +18,7 @@ export const useFavoritesMetadata = () => { const favoriteRelationFields = favoriteObjectMetadataItem.fields.filter( (fieldMetadataItem) => fieldMetadataItem.type === FieldMetadataType.RELATION && - fieldMetadataItem.name !== 'workspaceMember' && + fieldMetadataItem.name !== 'forWorkspaceMember' && fieldMetadataItem.name !== 'favoriteFolder', ); diff --git a/packages/twenty-front/src/modules/favorites/hooks/usePrefetchedFavoritesData.ts b/packages/twenty-front/src/modules/favorites/hooks/usePrefetchedFavoritesData.ts index c6a8cee72..8e27ef134 100644 --- a/packages/twenty-front/src/modules/favorites/hooks/usePrefetchedFavoritesData.ts +++ b/packages/twenty-front/src/modules/favorites/hooks/usePrefetchedFavoritesData.ts @@ -15,11 +15,11 @@ export const usePrefetchedFavoritesData = (): PrefetchedFavoritesData => { const prefetchFavorites = useRecoilValue(prefetchFavoritesState); const favorites = prefetchFavorites.filter( - (favorite) => favorite.workspaceMemberId === currentWorkspaceMemberId, + (favorite) => favorite.forWorkspaceMemberId === currentWorkspaceMemberId, ); const workspaceFavorites = prefetchFavorites.filter( - (favorite) => favorite.workspaceMemberId === null, + (favorite) => favorite.forWorkspaceMemberId === null, ); return { diff --git a/packages/twenty-front/src/modules/favorites/hooks/useWorkspaceFavorites.ts b/packages/twenty-front/src/modules/favorites/hooks/useWorkspaceFavorites.ts index d41a6ca32..332fd11f5 100644 --- a/packages/twenty-front/src/modules/favorites/hooks/useWorkspaceFavorites.ts +++ b/packages/twenty-front/src/modules/favorites/hooks/useWorkspaceFavorites.ts @@ -26,7 +26,7 @@ export const useWorkspaceFavorites = () => { favoriteObjectMetadataItem.fields.filter( (fieldMetadataItem) => fieldMetadataItem.type === FieldMetadataType.RELATION && - fieldMetadataItem.name !== 'workspaceMember' && + fieldMetadataItem.name !== 'forWorkspaceMember' && fieldMetadataItem.name !== 'favoriteFolder', ), [favoriteObjectMetadataItem.fields], diff --git a/packages/twenty-front/src/modules/favorites/types/Favorite.ts b/packages/twenty-front/src/modules/favorites/types/Favorite.ts index b2920fd81..3338b00ff 100644 --- a/packages/twenty-front/src/modules/favorites/types/Favorite.ts +++ b/packages/twenty-front/src/modules/favorites/types/Favorite.ts @@ -9,7 +9,7 @@ export type Favorite = { avatarType: AvatarType; link: string; recordId: string; - workspaceMemberId: string; + forWorkspaceMemberId: string; favoriteFolderId?: string; __typename: 'Favorite'; }; diff --git a/packages/twenty-front/src/modules/favorites/utils/sortFavorites.ts b/packages/twenty-front/src/modules/favorites/utils/sortFavorites.ts index 1f848e6c8..fa94245f3 100644 --- a/packages/twenty-front/src/modules/favorites/utils/sortFavorites.ts +++ b/packages/twenty-front/src/modules/favorites/utils/sortFavorites.ts @@ -27,7 +27,10 @@ export const sortFavorites = ( ) => { return favorites .map((favorite) => { - if (isDefined(favorite.viewId) && isDefined(favorite.workspaceMemberId)) { + if ( + isDefined(favorite.viewId) && + isDefined(favorite.forWorkspaceMemberId) + ) { const view = views.find((view) => view.id === favorite.viewId); if (!isDefined(view)) { @@ -54,7 +57,7 @@ export const sortFavorites = ( { objectNamePlural: labelPlural.toLowerCase() }, favorite.viewId ? { viewId: favorite.viewId } : undefined, ), - workspaceMemberId: favorite.workspaceMemberId, + forWorkspaceMemberId: favorite.forWorkspaceMemberId, favoriteFolderId: favorite.favoriteFolderId, objectNameSingular: 'view', Icon: view?.icon, @@ -86,7 +89,7 @@ export const sortFavorites = ( link: hasLinkToShowPage ? objectRecordIdentifier.linkToShowPage : '', - workspaceMemberId: favorite.workspaceMemberId, + forWorkspaceMemberId: favorite.forWorkspaceMemberId, favoriteFolderId: favorite.favoriteFolderId, objectNameSingular: objectNameSingular, } as ProcessedFavorite; diff --git a/packages/twenty-front/src/modules/object-record/hooks/__mocks__/personFragments.ts b/packages/twenty-front/src/modules/object-record/hooks/__mocks__/personFragments.ts index 12acf08cc..c392b1d3b 100644 --- a/packages/twenty-front/src/modules/object-record/hooks/__mocks__/personFragments.ts +++ b/packages/twenty-front/src/modules/object-record/hooks/__mocks__/personFragments.ts @@ -170,6 +170,7 @@ export const PERSON_FRAGMENT_WITH_DEPTH_ONE_RELATIONS = ` createdAt deletedAt favoriteFolderId + forWorkspaceMemberId id noteId opportunityId @@ -183,7 +184,6 @@ export const PERSON_FRAGMENT_WITH_DEPTH_ONE_RELATIONS = ` workflowId workflowRunId workflowVersionId - workspaceMemberId } } } diff --git a/packages/twenty-front/src/modules/object-record/hooks/__mocks__/useFindManyRecords.ts b/packages/twenty-front/src/modules/object-record/hooks/__mocks__/useFindManyRecords.ts index d25011073..cf2eb4853 100644 --- a/packages/twenty-front/src/modules/object-record/hooks/__mocks__/useFindManyRecords.ts +++ b/packages/twenty-front/src/modules/object-record/hooks/__mocks__/useFindManyRecords.ts @@ -107,9 +107,9 @@ export const query = gql` id companyId createdAt + forWorkspaceMemberId personId position - workspaceMemberId updatedAt } } diff --git a/packages/twenty-front/src/modules/object-record/record-field/hooks/__tests__/useToggleEditOnlyInput.test.tsx b/packages/twenty-front/src/modules/object-record/record-field/hooks/__tests__/useToggleEditOnlyInput.test.tsx index e3c496c01..1f8be4cad 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/hooks/__tests__/useToggleEditOnlyInput.test.tsx +++ b/packages/twenty-front/src/modules/object-record/record-field/hooks/__tests__/useToggleEditOnlyInput.test.tsx @@ -105,6 +105,7 @@ const mocks: MockedResponse[] = [ createdAt deletedAt favoriteFolderId + forWorkspaceMemberId id noteId opportunityId @@ -118,7 +119,6 @@ const mocks: MockedResponse[] = [ workflowId workflowRunId workflowVersionId - workspaceMemberId } } } diff --git a/packages/twenty-front/src/modules/object-record/spreadsheet-import/hooks/__tests__/useOpenObjectRecordsSpreadsheetImportDialog.test.ts b/packages/twenty-front/src/modules/object-record/spreadsheet-import/hooks/__tests__/useOpenObjectRecordsSpreadsheetImportDialog.test.ts index 672923433..4975b0f4f 100644 --- a/packages/twenty-front/src/modules/object-record/spreadsheet-import/hooks/__tests__/useOpenObjectRecordsSpreadsheetImportDialog.test.ts +++ b/packages/twenty-front/src/modules/object-record/spreadsheet-import/hooks/__tests__/useOpenObjectRecordsSpreadsheetImportDialog.test.ts @@ -105,6 +105,7 @@ const companyMocks = [ createdAt deletedAt favoriteFolderId + forWorkspaceMemberId id noteId opportunityId @@ -118,7 +119,6 @@ const companyMocks = [ workflowId workflowRunId workflowVersionId - workspaceMemberId } } } diff --git a/packages/twenty-front/src/modules/search/hooks/__mocks__/useFilteredSearchRecordQuery.ts b/packages/twenty-front/src/modules/search/hooks/__mocks__/useFilteredSearchRecordQuery.ts index b57f7ba7a..89e4afc95 100644 --- a/packages/twenty-front/src/modules/search/hooks/__mocks__/useFilteredSearchRecordQuery.ts +++ b/packages/twenty-front/src/modules/search/hooks/__mocks__/useFilteredSearchRecordQuery.ts @@ -96,9 +96,9 @@ export const query = gql` id companyId createdAt + forWorkspaceMemberId personId position - workspaceMemberId updatedAt } } diff --git a/packages/twenty-front/src/modules/views/view-picker/components/ViewPickerOptionDropdown.tsx b/packages/twenty-front/src/modules/views/view-picker/components/ViewPickerOptionDropdown.tsx index 2b01c9629..d6616b8c5 100644 --- a/packages/twenty-front/src/modules/views/view-picker/components/ViewPickerOptionDropdown.tsx +++ b/packages/twenty-front/src/modules/views/view-picker/components/ViewPickerOptionDropdown.tsx @@ -8,6 +8,7 @@ import { View } from '@/views/types/View'; import { useDeleteViewFromCurrentState } from '@/views/view-picker/hooks/useDeleteViewFromCurrentState'; import { useViewPickerMode } from '@/views/view-picker/hooks/useViewPickerMode'; import { viewPickerReferenceViewIdComponentState } from '@/views/view-picker/states/viewPickerReferenceViewIdComponentState'; +import { useLingui } from '@lingui/react/macro'; import { useState } from 'react'; import { IconHeart, @@ -17,7 +18,6 @@ import { MenuItem, useIcons, } from 'twenty-ui'; -import { useLingui } from '@lingui/react/macro'; type ViewPickerOptionDropdownProps = { isIndexView: boolean; @@ -46,7 +46,8 @@ export const ViewPickerOptionDropdown = ({ const { createFavorite } = useCreateFavorite(); const isFavorite = favorites.some( - (favorite) => favorite.recordId === view.id && favorite.workspaceMemberId, + (favorite) => + favorite.recordId === view.id && favorite.forWorkspaceMemberId, ); const handleDelete = () => { diff --git a/packages/twenty-front/src/testing/mock-data/favorite.ts b/packages/twenty-front/src/testing/mock-data/favorite.ts index c048d5e73..bf7dbf51c 100644 --- a/packages/twenty-front/src/testing/mock-data/favorite.ts +++ b/packages/twenty-front/src/testing/mock-data/favorite.ts @@ -16,8 +16,8 @@ export const mockedFavoritesData = [ workflowRun: null, workflowVersionId: null, workflowVersion: null, - workspaceMemberId: mockedWorkspaceMemberData.id, - workspaceMember: mockedWorkspaceMemberData, + forWorkspaceMemberId: mockedWorkspaceMemberData.id, + forWorkspaceMember: mockedWorkspaceMemberData, companyId: companiesQueryResult.companies.edges[0].node.id, company: companiesQueryResult.companies.edges[0].node, viewId: null, @@ -49,8 +49,8 @@ export const mockedFavoritesData = [ workflowRun: null, workflowVersionId: null, workflowVersion: null, - workspaceMemberId: null, - workspaceMember: null, + forWorkspaceMemberId: null, + forWorkspaceMember: null, companyId: null, company: null, viewId: mockedViewsData[0].id, @@ -82,8 +82,8 @@ export const mockedFavoritesData = [ workflowRun: null, workflowVersionId: null, workflowVersion: null, - workspaceMemberId: null, - workspaceMember: null, + forWorkspaceMemberId: null, + forWorkspaceMember: null, companyId: null, company: null, viewId: mockedViewsData[1].id, @@ -115,8 +115,8 @@ export const mockedFavoritesData = [ workflowRun: null, workflowVersionId: null, workflowVersion: null, - workspaceMemberId: null, - workspaceMember: null, + forWorkspaceMemberId: null, + forWorkspaceMember: null, companyId: null, company: null, viewId: mockedViewsData[1].id, diff --git a/packages/twenty-front/src/testing/mock-data/generated/mock-metadata-query-result.ts b/packages/twenty-front/src/testing/mock-data/generated/mock-metadata-query-result.ts index 92b85df65..c0b48137c 100644 --- a/packages/twenty-front/src/testing/mock-data/generated/mock-metadata-query-result.ts +++ b/packages/twenty-front/src/testing/mock-data/generated/mock-metadata-query-result.ts @@ -8413,7 +8413,7 @@ export const mockedStandardObjectMetadataQueryResult: ObjectMetadataItemsQuery = __typename: "Field", id: "dd7abd0e-fb7a-44b5-b445-a886451da34f", type: "UUID", - name: "workspaceMemberId", + name: "forWorkspaceMemberId", icon: "IconCircleUser", isCustom: false, isActive: true, @@ -8434,7 +8434,7 @@ export const mockedStandardObjectMetadataQueryResult: ObjectMetadataItemsQuery = __typename: "Field", id: "b37d7cda-7edd-4fb7-8443-4cb60d16bfa5", type: "RELATION", - name: "workspaceMember", + name: "forWorkspaceMember", icon: "IconCircleUser", isCustom: false, isActive: true, @@ -9240,7 +9240,7 @@ export const mockedStandardObjectMetadataQueryResult: ObjectMetadataItemsQuery = __typename: "Field", id: "d138fd97-afec-4b74-9f61-5932fde251b4", type: "UUID", - name: "workspaceMemberId", + name: "forWorkspaceMemberId", icon: "IconCircleUser", isCustom: false, isActive: true, @@ -9261,7 +9261,7 @@ export const mockedStandardObjectMetadataQueryResult: ObjectMetadataItemsQuery = __typename: "Field", id: "0447657b-e2a8-4f8b-ad9b-aa9509ac0ac2", type: "RELATION", - name: "workspaceMember", + name: "forWorkspaceMember", icon: "IconCircleUser", isCustom: false, isActive: true, @@ -9289,7 +9289,7 @@ export const mockedStandardObjectMetadataQueryResult: ObjectMetadataItemsQuery = sourceFieldMetadata: { __typename: "Field", id: "0447657b-e2a8-4f8b-ad9b-aa9509ac0ac2", - name: "workspaceMember" + name: "forWorkspaceMember" }, targetObjectMetadata: { __typename: "Object", diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids.ts index 48c8e6d81..c0989cc64 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids.ts @@ -206,7 +206,7 @@ export const TIMELINE_ACTIVITY_STANDARD_FIELD_IDS = { export const FAVORITE_STANDARD_FIELD_IDS = { position: '20202020-dd26-42c6-8c3c-2a7598c204f6', - workspaceMember: '20202020-ce63-49cb-9676-fdc0c45892cd', + forWorkspaceMember: '20202020-ce63-49cb-9676-fdc0c45892cd', person: '20202020-c428-4f40-b6f3-86091511c41c', company: '20202020-cff5-4682-8bf9-069169e08279', opportunity: '20202020-dabc-48e1-8318-2781a2b32aa2', @@ -498,6 +498,7 @@ export const WORKFLOW_VERSION_STANDARD_FIELD_IDS = { }; export const WORKSPACE_MEMBER_STANDARD_FIELD_IDS = { + position: '20202020-1810-4591-a93c-d0df97dca843', name: '20202020-e914-43a6-9c26-3603c59065f4', colorScheme: '20202020-66bc-47f2-adac-f2ef7c598b63', locale: '20202020-402e-4695-b169-794fa015afbe', diff --git a/packages/twenty-server/src/modules/favorite/standard-objects/favorite.workspace-entity.ts b/packages/twenty-server/src/modules/favorite/standard-objects/favorite.workspace-entity.ts index 11bdb49f6..ec31cc4ae 100644 --- a/packages/twenty-server/src/modules/favorite/standard-objects/favorite.workspace-entity.ts +++ b/packages/twenty-server/src/modules/favorite/standard-objects/favorite.workspace-entity.ts @@ -53,7 +53,7 @@ export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity { // Relations @WorkspaceRelation({ - standardId: FAVORITE_STANDARD_FIELD_IDS.workspaceMember, + standardId: FAVORITE_STANDARD_FIELD_IDS.forWorkspaceMember, type: RelationMetadataType.MANY_TO_ONE, label: msg`Workspace Member`, description: msg`Favorite workspace member`, @@ -62,10 +62,10 @@ export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity { inverseSideTarget: () => WorkspaceMemberWorkspaceEntity, }) @WorkspaceIsNullable() - workspaceMember: Relation; + forWorkspaceMember: Relation; - @WorkspaceJoinColumn('workspaceMember') - workspaceMemberId: string; + @WorkspaceJoinColumn('forWorkspaceMember') + forWorkspaceMemberId: string; @WorkspaceRelation({ standardId: FAVORITE_STANDARD_FIELD_IDS.person, diff --git a/packages/twenty-server/src/modules/workspace-member/standard-objects/workspace-member.workspace-entity.ts b/packages/twenty-server/src/modules/workspace-member/standard-objects/workspace-member.workspace-entity.ts index 2fb5c8b15..3a615ad9c 100644 --- a/packages/twenty-server/src/modules/workspace-member/standard-objects/workspace-member.workspace-entity.ts +++ b/packages/twenty-server/src/modules/workspace-member/standard-objects/workspace-member.workspace-entity.ts @@ -82,6 +82,17 @@ export const SEARCH_FIELDS_FOR_WORKSPACE_MEMBER: FieldTypeAndNameMetadata[] = [ @WorkspaceIsSystem() @WorkspaceIsNotAuditLogged() export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity { + @WorkspaceField({ + standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.position, + type: FieldMetadataType.POSITION, + label: msg`Position`, + description: msg`Workspace member position`, + icon: 'IconHierarchy2', + defaultValue: 0, + }) + @WorkspaceIsSystem() + position: number; + @WorkspaceField({ standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.name, type: FieldMetadataType.FULL_NAME, @@ -99,6 +110,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity { icon: 'IconColorSwatch', defaultValue: "'System'", }) + @WorkspaceIsSystem() colorScheme: string; @WorkspaceField({ @@ -109,6 +121,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity { icon: 'IconLanguage', defaultValue: `'${SOURCE_LOCALE}'`, }) + @WorkspaceIsSystem() locale: keyof typeof APP_LOCALES; @WorkspaceField({ @@ -118,6 +131,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity { description: msg`Workspace member avatar`, icon: 'IconFileUpload', }) + @WorkspaceIsSystem() avatarUrl: string; @WorkspaceField({ @@ -127,6 +141,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity { description: msg`Related user email address`, icon: 'IconMail', }) + @WorkspaceIsSystem() userEmail: string; @WorkspaceField({ @@ -136,8 +151,88 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity { description: msg`Associated User Id`, icon: 'IconCircleUsers', }) + @WorkspaceIsSystem() userId: string; + @WorkspaceField({ + standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.timeZone, + type: FieldMetadataType.TEXT, + label: msg`Time zone`, + defaultValue: "'system'", + description: msg`User time zone`, + icon: 'IconTimezone', + }) + @WorkspaceIsSystem() + timeZone: string; + + @WorkspaceField({ + standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.dateFormat, + type: FieldMetadataType.SELECT, + label: msg`Date format`, + description: msg`User's preferred date format`, + icon: 'IconCalendarEvent', + options: [ + { + value: WorkspaceMemberDateFormatEnum.SYSTEM, + label: 'System', + position: 0, + color: 'turquoise', + }, + { + value: WorkspaceMemberDateFormatEnum.MONTH_FIRST, + label: 'Month First', + position: 1, + color: 'red', + }, + { + value: WorkspaceMemberDateFormatEnum.DAY_FIRST, + label: 'Day First', + position: 2, + color: 'purple', + }, + { + value: WorkspaceMemberDateFormatEnum.YEAR_FIRST, + label: 'Year First', + position: 3, + color: 'sky', + }, + ], + defaultValue: `'${WorkspaceMemberDateFormatEnum.SYSTEM}'`, + }) + @WorkspaceIsSystem() + dateFormat: string; + + @WorkspaceField({ + standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.timeFormat, + type: FieldMetadataType.SELECT, + label: msg`Time format`, + description: msg`User's preferred time format`, + icon: 'IconClock2', + options: [ + { + value: WorkspaceMemberTimeFormatEnum.SYSTEM, + label: 'System', + position: 0, + color: 'sky', + }, + { + value: WorkspaceMemberTimeFormatEnum.HOUR_24, + label: '24HRS', + position: 1, + color: 'red', + }, + { + value: WorkspaceMemberTimeFormatEnum.HOUR_12, + label: '12HRS', + position: 2, + color: 'purple', + }, + ], + defaultValue: `'${WorkspaceMemberTimeFormatEnum.SYSTEM}'`, + }) + @WorkspaceIsSystem() + timeFormat: string; + // Relations @WorkspaceRelation({ standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.assignedTasks, @@ -158,6 +253,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity { description: msg`Favorites linked to the workspace member`, icon: 'IconHeart', inverseSideTarget: () => FavoriteWorkspaceEntity, + inverseSideFieldKey: 'forWorkspaceMember', onDelete: RelationOnDeleteAction.CASCADE, }) favorites: Relation; @@ -262,82 +358,6 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity { @WorkspaceIsSystem() auditLogs: Relation; - @WorkspaceField({ - standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.timeZone, - type: FieldMetadataType.TEXT, - label: msg`Time zone`, - defaultValue: "'system'", - description: msg`User time zone`, - icon: 'IconTimezone', - }) - timeZone: string; - - @WorkspaceField({ - standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.dateFormat, - type: FieldMetadataType.SELECT, - label: msg`Date format`, - description: msg`User's preferred date format`, - icon: 'IconCalendarEvent', - options: [ - { - value: WorkspaceMemberDateFormatEnum.SYSTEM, - label: 'System', - position: 0, - color: 'turquoise', - }, - { - value: WorkspaceMemberDateFormatEnum.MONTH_FIRST, - label: 'Month First', - position: 1, - color: 'red', - }, - { - value: WorkspaceMemberDateFormatEnum.DAY_FIRST, - label: 'Day First', - position: 2, - color: 'purple', - }, - { - value: WorkspaceMemberDateFormatEnum.YEAR_FIRST, - label: 'Year First', - position: 3, - color: 'sky', - }, - ], - defaultValue: `'${WorkspaceMemberDateFormatEnum.SYSTEM}'`, - }) - dateFormat: string; - - @WorkspaceField({ - standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.timeFormat, - type: FieldMetadataType.SELECT, - label: msg`Time format`, - description: msg`User's preferred time format`, - icon: 'IconClock2', - options: [ - { - value: WorkspaceMemberTimeFormatEnum.SYSTEM, - label: 'System', - position: 0, - color: 'sky', - }, - { - value: WorkspaceMemberTimeFormatEnum.HOUR_24, - label: '24HRS', - position: 1, - color: 'red', - }, - { - value: WorkspaceMemberTimeFormatEnum.HOUR_12, - label: '12HRS', - position: 2, - color: 'purple', - }, - ], - defaultValue: `'${WorkspaceMemberTimeFormatEnum.SYSTEM}'`, - }) - timeFormat: string; - @WorkspaceField({ standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.searchVector, type: FieldMetadataType.TS_VECTOR, diff --git a/packages/twenty-server/test/integration/graphql/suites/object-generated/favorites.integration-spec.ts b/packages/twenty-server/test/integration/graphql/suites/object-generated/favorites.integration-spec.ts index 864f15e2e..4c466fc16 100644 --- a/packages/twenty-server/test/integration/graphql/suites/object-generated/favorites.integration-spec.ts +++ b/packages/twenty-server/test/integration/graphql/suites/object-generated/favorites.integration-spec.ts @@ -15,7 +15,7 @@ describe('favoritesResolver (e2e)', () => { createdAt updatedAt deletedAt - workspaceMemberId + forWorkspaceMemberId personId companyId opportunityId @@ -59,7 +59,7 @@ describe('favoritesResolver (e2e)', () => { expect(favorites).toHaveProperty('createdAt'); expect(favorites).toHaveProperty('updatedAt'); expect(favorites).toHaveProperty('deletedAt'); - expect(favorites).toHaveProperty('workspaceMemberId'); + expect(favorites).toHaveProperty('forWorkspaceMemberId'); expect(favorites).toHaveProperty('personId'); expect(favorites).toHaveProperty('companyId'); expect(favorites).toHaveProperty('opportunityId'); diff --git a/packages/twenty-server/test/integration/graphql/suites/object-generated/search-favorites.integration-spec.ts b/packages/twenty-server/test/integration/graphql/suites/object-generated/search-favorites.integration-spec.ts index 675020b4a..82265314b 100644 --- a/packages/twenty-server/test/integration/graphql/suites/object-generated/search-favorites.integration-spec.ts +++ b/packages/twenty-server/test/integration/graphql/suites/object-generated/search-favorites.integration-spec.ts @@ -15,7 +15,7 @@ describe('searchFavoritesResolver (e2e)', () => { createdAt updatedAt deletedAt - workspaceMemberId + forWorkspaceMemberId personId companyId opportunityId @@ -59,7 +59,7 @@ describe('searchFavoritesResolver (e2e)', () => { expect(searchFavorites).toHaveProperty('createdAt'); expect(searchFavorites).toHaveProperty('updatedAt'); expect(searchFavorites).toHaveProperty('deletedAt'); - expect(searchFavorites).toHaveProperty('workspaceMemberId'); + expect(searchFavorites).toHaveProperty('forWorkspaceMemberId'); expect(searchFavorites).toHaveProperty('personId'); expect(searchFavorites).toHaveProperty('companyId'); expect(searchFavorites).toHaveProperty('opportunityId');