Data changes to prepare for workspaceMember page (#10439)
Workspace Member will get their own record page in the future. This PR lays backend changes to prepare for this: - Settings most fields on WorkspaceMember as system fields - Renaming workspaceMember/workspaceMemberId to forWorkspaceMember/forWorkspaceMemberId as it conflicts with the morph relationship, if we want to be able to add a workspace member as favorite --------- Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
This commit is contained in:
@ -91,6 +91,7 @@ const mocks: MockedResponse[] = [
|
|||||||
createdAt
|
createdAt
|
||||||
deletedAt
|
deletedAt
|
||||||
favoriteFolderId
|
favoriteFolderId
|
||||||
|
forWorkspaceMemberId
|
||||||
id
|
id
|
||||||
noteId
|
noteId
|
||||||
opportunityId
|
opportunityId
|
||||||
@ -104,7 +105,6 @@ const mocks: MockedResponse[] = [
|
|||||||
workflowId
|
workflowId
|
||||||
workflowRunId
|
workflowRunId
|
||||||
workflowVersionId
|
workflowVersionId
|
||||||
workspaceMemberId
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -72,7 +72,7 @@ export const FavoriteFolderPickerEffect = ({
|
|||||||
const checkedFolderIds = favorites
|
const checkedFolderIds = favorites
|
||||||
.filter(
|
.filter(
|
||||||
(favorite) =>
|
(favorite) =>
|
||||||
favorite.recordId === targetId && favorite.workspaceMemberId,
|
favorite.recordId === targetId && favorite.forWorkspaceMemberId,
|
||||||
)
|
)
|
||||||
.map((favorite) => favorite.favoriteFolderId || 'no-folder');
|
.map((favorite) => favorite.favoriteFolderId || 'no-folder');
|
||||||
setCheckedState(checkedFolderIds);
|
setCheckedState(checkedFolderIds);
|
||||||
|
|||||||
@ -25,7 +25,7 @@ export const initialFavorites: Favorite[] = [
|
|||||||
recordId: '1',
|
recordId: '1',
|
||||||
person: { id: '1', name: 'John Doe' },
|
person: { id: '1', name: 'John Doe' },
|
||||||
company: { id: '2', name: 'ABC Corp' },
|
company: { id: '2', name: 'ABC Corp' },
|
||||||
workspaceMemberId: '1',
|
forWorkspaceMemberId: '1',
|
||||||
favoriteFolderId: '1',
|
favoriteFolderId: '1',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -40,7 +40,7 @@ export const initialFavorites: Favorite[] = [
|
|||||||
recordId: '1',
|
recordId: '1',
|
||||||
person: { id: '3', name: 'Jane Doe' },
|
person: { id: '3', name: 'Jane Doe' },
|
||||||
company: { id: '4', name: 'Company Test' },
|
company: { id: '4', name: 'Company Test' },
|
||||||
workspaceMemberId: '1',
|
forWorkspaceMemberId: '1',
|
||||||
favoriteFolderId: '1',
|
favoriteFolderId: '1',
|
||||||
|
|
||||||
},
|
},
|
||||||
@ -54,7 +54,7 @@ export const initialFavorites: Favorite[] = [
|
|||||||
avatarType: 'squared' as AvatarType,
|
avatarType: 'squared' as AvatarType,
|
||||||
link: 'example.com',
|
link: 'example.com',
|
||||||
recordId: '1',
|
recordId: '1',
|
||||||
workspaceMemberId: '1',
|
forWorkspaceMemberId: '1',
|
||||||
favoriteFolderId: '1',
|
favoriteFolderId: '1',
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
@ -69,7 +69,7 @@ export const sortedFavorites = [
|
|||||||
labelIdentifier: ' ',
|
labelIdentifier: ' ',
|
||||||
link: '/object/person/1',
|
link: '/object/person/1',
|
||||||
objectNameSingular: 'person',
|
objectNameSingular: 'person',
|
||||||
workspaceMemberId: '1',
|
forWorkspaceMemberId: '1',
|
||||||
favoriteFolderId: '1',
|
favoriteFolderId: '1',
|
||||||
__typename: 'Favorite',
|
__typename: 'Favorite',
|
||||||
},
|
},
|
||||||
@ -82,7 +82,7 @@ export const sortedFavorites = [
|
|||||||
labelIdentifier: ' ',
|
labelIdentifier: ' ',
|
||||||
link: '/object/person/3',
|
link: '/object/person/3',
|
||||||
objectNameSingular: 'person',
|
objectNameSingular: 'person',
|
||||||
workspaceMemberId: '1',
|
forWorkspaceMemberId: '1',
|
||||||
favoriteFolderId: '1',
|
favoriteFolderId: '1',
|
||||||
__typename: 'Favorite',
|
__typename: 'Favorite',
|
||||||
},
|
},
|
||||||
@ -96,7 +96,7 @@ export const sortedFavorites = [
|
|||||||
recordId: '1',
|
recordId: '1',
|
||||||
avatarType: 'squared',
|
avatarType: 'squared',
|
||||||
favoriteFolderId: '1',
|
favoriteFolderId: '1',
|
||||||
workspaceMemberId: '1',
|
forWorkspaceMemberId: '1',
|
||||||
__typename: 'Favorite',
|
__typename: 'Favorite',
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
@ -176,6 +176,26 @@ mutation UpdateOneFavorite(
|
|||||||
updatedAt
|
updatedAt
|
||||||
}
|
}
|
||||||
favoriteFolderId
|
favoriteFolderId
|
||||||
|
forWorkspaceMember {
|
||||||
|
__typename
|
||||||
|
avatarUrl
|
||||||
|
colorScheme
|
||||||
|
createdAt
|
||||||
|
dateFormat
|
||||||
|
deletedAt
|
||||||
|
id
|
||||||
|
locale
|
||||||
|
name {
|
||||||
|
firstName
|
||||||
|
lastName
|
||||||
|
}
|
||||||
|
timeFormat
|
||||||
|
timeZone
|
||||||
|
updatedAt
|
||||||
|
userEmail
|
||||||
|
userId
|
||||||
|
}
|
||||||
|
forWorkspaceMemberId
|
||||||
id
|
id
|
||||||
note {
|
note {
|
||||||
__typename
|
__typename
|
||||||
@ -446,26 +466,6 @@ mutation UpdateOneFavorite(
|
|||||||
workflowId
|
workflowId
|
||||||
}
|
}
|
||||||
workflowVersionId
|
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
|
updatedAt
|
||||||
}
|
}
|
||||||
favoriteFolderId
|
favoriteFolderId
|
||||||
|
forWorkspaceMember {
|
||||||
|
__typename
|
||||||
|
avatarUrl
|
||||||
|
colorScheme
|
||||||
|
createdAt
|
||||||
|
dateFormat
|
||||||
|
deletedAt
|
||||||
|
id
|
||||||
|
locale
|
||||||
|
name {
|
||||||
|
firstName
|
||||||
|
lastName
|
||||||
|
}
|
||||||
|
timeFormat
|
||||||
|
timeZone
|
||||||
|
updatedAt
|
||||||
|
userEmail
|
||||||
|
userId
|
||||||
|
}
|
||||||
|
forWorkspaceMemberId
|
||||||
id
|
id
|
||||||
note {
|
note {
|
||||||
__typename
|
__typename
|
||||||
@ -815,26 +835,6 @@ export const mocks = [
|
|||||||
workflowId
|
workflowId
|
||||||
}
|
}
|
||||||
workflowVersionId
|
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: {
|
input: {
|
||||||
personId: favoriteTargetObjectId,
|
personId: favoriteTargetObjectId,
|
||||||
position: 1,
|
position: 1,
|
||||||
workspaceMemberId: '1',
|
forWorkspaceMemberId: '1',
|
||||||
favoriteFolderId: undefined,
|
favoriteFolderId: undefined,
|
||||||
id: mockId,
|
id: mockId,
|
||||||
},
|
},
|
||||||
|
|||||||
@ -17,7 +17,7 @@ export const useCreateFavorite = () => {
|
|||||||
const relevantFavorites = favoriteFolderId
|
const relevantFavorites = favoriteFolderId
|
||||||
? favorites.filter((fav) => fav.favoriteFolderId === favoriteFolderId)
|
? favorites.filter((fav) => fav.favoriteFolderId === favoriteFolderId)
|
||||||
: favorites.filter(
|
: favorites.filter(
|
||||||
(fav) => !fav.favoriteFolderId && fav.workspaceMemberId,
|
(fav) => !fav.favoriteFolderId && fav.forWorkspaceMemberId,
|
||||||
);
|
);
|
||||||
|
|
||||||
const maxPosition = Math.max(
|
const maxPosition = Math.max(
|
||||||
@ -28,7 +28,7 @@ export const useCreateFavorite = () => {
|
|||||||
createOneFavorite({
|
createOneFavorite({
|
||||||
[`${targetObjectNameSingular}Id`]: targetRecord.id,
|
[`${targetObjectNameSingular}Id`]: targetRecord.id,
|
||||||
position: maxPosition + 1,
|
position: maxPosition + 1,
|
||||||
workspaceMemberId: currentWorkspaceMemberId,
|
forWorkspaceMemberId: currentWorkspaceMemberId,
|
||||||
favoriteFolderId,
|
favoriteFolderId,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@ -27,7 +27,7 @@ export const useFavorites = () => {
|
|||||||
favoriteObjectMetadataItem.fields.filter(
|
favoriteObjectMetadataItem.fields.filter(
|
||||||
(fieldMetadataItem) =>
|
(fieldMetadataItem) =>
|
||||||
fieldMetadataItem.type === FieldMetadataType.RELATION &&
|
fieldMetadataItem.type === FieldMetadataType.RELATION &&
|
||||||
fieldMetadataItem.name !== 'workspaceMember' &&
|
fieldMetadataItem.name !== 'forWorkspaceMember' &&
|
||||||
fieldMetadataItem.name !== 'favoriteFolder',
|
fieldMetadataItem.name !== 'favoriteFolder',
|
||||||
),
|
),
|
||||||
[favoriteObjectMetadataItem.fields],
|
[favoriteObjectMetadataItem.fields],
|
||||||
|
|||||||
@ -18,7 +18,7 @@ export const useFavoritesMetadata = () => {
|
|||||||
const favoriteRelationFields = favoriteObjectMetadataItem.fields.filter(
|
const favoriteRelationFields = favoriteObjectMetadataItem.fields.filter(
|
||||||
(fieldMetadataItem) =>
|
(fieldMetadataItem) =>
|
||||||
fieldMetadataItem.type === FieldMetadataType.RELATION &&
|
fieldMetadataItem.type === FieldMetadataType.RELATION &&
|
||||||
fieldMetadataItem.name !== 'workspaceMember' &&
|
fieldMetadataItem.name !== 'forWorkspaceMember' &&
|
||||||
fieldMetadataItem.name !== 'favoriteFolder',
|
fieldMetadataItem.name !== 'favoriteFolder',
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@ -15,11 +15,11 @@ export const usePrefetchedFavoritesData = (): PrefetchedFavoritesData => {
|
|||||||
const prefetchFavorites = useRecoilValue(prefetchFavoritesState);
|
const prefetchFavorites = useRecoilValue(prefetchFavoritesState);
|
||||||
|
|
||||||
const favorites = prefetchFavorites.filter(
|
const favorites = prefetchFavorites.filter(
|
||||||
(favorite) => favorite.workspaceMemberId === currentWorkspaceMemberId,
|
(favorite) => favorite.forWorkspaceMemberId === currentWorkspaceMemberId,
|
||||||
);
|
);
|
||||||
|
|
||||||
const workspaceFavorites = prefetchFavorites.filter(
|
const workspaceFavorites = prefetchFavorites.filter(
|
||||||
(favorite) => favorite.workspaceMemberId === null,
|
(favorite) => favorite.forWorkspaceMemberId === null,
|
||||||
);
|
);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|||||||
@ -26,7 +26,7 @@ export const useWorkspaceFavorites = () => {
|
|||||||
favoriteObjectMetadataItem.fields.filter(
|
favoriteObjectMetadataItem.fields.filter(
|
||||||
(fieldMetadataItem) =>
|
(fieldMetadataItem) =>
|
||||||
fieldMetadataItem.type === FieldMetadataType.RELATION &&
|
fieldMetadataItem.type === FieldMetadataType.RELATION &&
|
||||||
fieldMetadataItem.name !== 'workspaceMember' &&
|
fieldMetadataItem.name !== 'forWorkspaceMember' &&
|
||||||
fieldMetadataItem.name !== 'favoriteFolder',
|
fieldMetadataItem.name !== 'favoriteFolder',
|
||||||
),
|
),
|
||||||
[favoriteObjectMetadataItem.fields],
|
[favoriteObjectMetadataItem.fields],
|
||||||
|
|||||||
@ -9,7 +9,7 @@ export type Favorite = {
|
|||||||
avatarType: AvatarType;
|
avatarType: AvatarType;
|
||||||
link: string;
|
link: string;
|
||||||
recordId: string;
|
recordId: string;
|
||||||
workspaceMemberId: string;
|
forWorkspaceMemberId: string;
|
||||||
favoriteFolderId?: string;
|
favoriteFolderId?: string;
|
||||||
__typename: 'Favorite';
|
__typename: 'Favorite';
|
||||||
};
|
};
|
||||||
|
|||||||
@ -27,7 +27,10 @@ export const sortFavorites = (
|
|||||||
) => {
|
) => {
|
||||||
return favorites
|
return favorites
|
||||||
.map((favorite) => {
|
.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);
|
const view = views.find((view) => view.id === favorite.viewId);
|
||||||
|
|
||||||
if (!isDefined(view)) {
|
if (!isDefined(view)) {
|
||||||
@ -54,7 +57,7 @@ export const sortFavorites = (
|
|||||||
{ objectNamePlural: labelPlural.toLowerCase() },
|
{ objectNamePlural: labelPlural.toLowerCase() },
|
||||||
favorite.viewId ? { viewId: favorite.viewId } : undefined,
|
favorite.viewId ? { viewId: favorite.viewId } : undefined,
|
||||||
),
|
),
|
||||||
workspaceMemberId: favorite.workspaceMemberId,
|
forWorkspaceMemberId: favorite.forWorkspaceMemberId,
|
||||||
favoriteFolderId: favorite.favoriteFolderId,
|
favoriteFolderId: favorite.favoriteFolderId,
|
||||||
objectNameSingular: 'view',
|
objectNameSingular: 'view',
|
||||||
Icon: view?.icon,
|
Icon: view?.icon,
|
||||||
@ -86,7 +89,7 @@ export const sortFavorites = (
|
|||||||
link: hasLinkToShowPage
|
link: hasLinkToShowPage
|
||||||
? objectRecordIdentifier.linkToShowPage
|
? objectRecordIdentifier.linkToShowPage
|
||||||
: '',
|
: '',
|
||||||
workspaceMemberId: favorite.workspaceMemberId,
|
forWorkspaceMemberId: favorite.forWorkspaceMemberId,
|
||||||
favoriteFolderId: favorite.favoriteFolderId,
|
favoriteFolderId: favorite.favoriteFolderId,
|
||||||
objectNameSingular: objectNameSingular,
|
objectNameSingular: objectNameSingular,
|
||||||
} as ProcessedFavorite;
|
} as ProcessedFavorite;
|
||||||
|
|||||||
@ -170,6 +170,7 @@ export const PERSON_FRAGMENT_WITH_DEPTH_ONE_RELATIONS = `
|
|||||||
createdAt
|
createdAt
|
||||||
deletedAt
|
deletedAt
|
||||||
favoriteFolderId
|
favoriteFolderId
|
||||||
|
forWorkspaceMemberId
|
||||||
id
|
id
|
||||||
noteId
|
noteId
|
||||||
opportunityId
|
opportunityId
|
||||||
@ -183,7 +184,6 @@ export const PERSON_FRAGMENT_WITH_DEPTH_ONE_RELATIONS = `
|
|||||||
workflowId
|
workflowId
|
||||||
workflowRunId
|
workflowRunId
|
||||||
workflowVersionId
|
workflowVersionId
|
||||||
workspaceMemberId
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -107,9 +107,9 @@ export const query = gql`
|
|||||||
id
|
id
|
||||||
companyId
|
companyId
|
||||||
createdAt
|
createdAt
|
||||||
|
forWorkspaceMemberId
|
||||||
personId
|
personId
|
||||||
position
|
position
|
||||||
workspaceMemberId
|
|
||||||
updatedAt
|
updatedAt
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -105,6 +105,7 @@ const mocks: MockedResponse[] = [
|
|||||||
createdAt
|
createdAt
|
||||||
deletedAt
|
deletedAt
|
||||||
favoriteFolderId
|
favoriteFolderId
|
||||||
|
forWorkspaceMemberId
|
||||||
id
|
id
|
||||||
noteId
|
noteId
|
||||||
opportunityId
|
opportunityId
|
||||||
@ -118,7 +119,6 @@ const mocks: MockedResponse[] = [
|
|||||||
workflowId
|
workflowId
|
||||||
workflowRunId
|
workflowRunId
|
||||||
workflowVersionId
|
workflowVersionId
|
||||||
workspaceMemberId
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -105,6 +105,7 @@ const companyMocks = [
|
|||||||
createdAt
|
createdAt
|
||||||
deletedAt
|
deletedAt
|
||||||
favoriteFolderId
|
favoriteFolderId
|
||||||
|
forWorkspaceMemberId
|
||||||
id
|
id
|
||||||
noteId
|
noteId
|
||||||
opportunityId
|
opportunityId
|
||||||
@ -118,7 +119,6 @@ const companyMocks = [
|
|||||||
workflowId
|
workflowId
|
||||||
workflowRunId
|
workflowRunId
|
||||||
workflowVersionId
|
workflowVersionId
|
||||||
workspaceMemberId
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -96,9 +96,9 @@ export const query = gql`
|
|||||||
id
|
id
|
||||||
companyId
|
companyId
|
||||||
createdAt
|
createdAt
|
||||||
|
forWorkspaceMemberId
|
||||||
personId
|
personId
|
||||||
position
|
position
|
||||||
workspaceMemberId
|
|
||||||
updatedAt
|
updatedAt
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import { View } from '@/views/types/View';
|
|||||||
import { useDeleteViewFromCurrentState } from '@/views/view-picker/hooks/useDeleteViewFromCurrentState';
|
import { useDeleteViewFromCurrentState } from '@/views/view-picker/hooks/useDeleteViewFromCurrentState';
|
||||||
import { useViewPickerMode } from '@/views/view-picker/hooks/useViewPickerMode';
|
import { useViewPickerMode } from '@/views/view-picker/hooks/useViewPickerMode';
|
||||||
import { viewPickerReferenceViewIdComponentState } from '@/views/view-picker/states/viewPickerReferenceViewIdComponentState';
|
import { viewPickerReferenceViewIdComponentState } from '@/views/view-picker/states/viewPickerReferenceViewIdComponentState';
|
||||||
|
import { useLingui } from '@lingui/react/macro';
|
||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
import {
|
import {
|
||||||
IconHeart,
|
IconHeart,
|
||||||
@ -17,7 +18,6 @@ import {
|
|||||||
MenuItem,
|
MenuItem,
|
||||||
useIcons,
|
useIcons,
|
||||||
} from 'twenty-ui';
|
} from 'twenty-ui';
|
||||||
import { useLingui } from '@lingui/react/macro';
|
|
||||||
|
|
||||||
type ViewPickerOptionDropdownProps = {
|
type ViewPickerOptionDropdownProps = {
|
||||||
isIndexView: boolean;
|
isIndexView: boolean;
|
||||||
@ -46,7 +46,8 @@ export const ViewPickerOptionDropdown = ({
|
|||||||
const { createFavorite } = useCreateFavorite();
|
const { createFavorite } = useCreateFavorite();
|
||||||
|
|
||||||
const isFavorite = favorites.some(
|
const isFavorite = favorites.some(
|
||||||
(favorite) => favorite.recordId === view.id && favorite.workspaceMemberId,
|
(favorite) =>
|
||||||
|
favorite.recordId === view.id && favorite.forWorkspaceMemberId,
|
||||||
);
|
);
|
||||||
|
|
||||||
const handleDelete = () => {
|
const handleDelete = () => {
|
||||||
|
|||||||
@ -16,8 +16,8 @@ export const mockedFavoritesData = [
|
|||||||
workflowRun: null,
|
workflowRun: null,
|
||||||
workflowVersionId: null,
|
workflowVersionId: null,
|
||||||
workflowVersion: null,
|
workflowVersion: null,
|
||||||
workspaceMemberId: mockedWorkspaceMemberData.id,
|
forWorkspaceMemberId: mockedWorkspaceMemberData.id,
|
||||||
workspaceMember: mockedWorkspaceMemberData,
|
forWorkspaceMember: mockedWorkspaceMemberData,
|
||||||
companyId: companiesQueryResult.companies.edges[0].node.id,
|
companyId: companiesQueryResult.companies.edges[0].node.id,
|
||||||
company: companiesQueryResult.companies.edges[0].node,
|
company: companiesQueryResult.companies.edges[0].node,
|
||||||
viewId: null,
|
viewId: null,
|
||||||
@ -49,8 +49,8 @@ export const mockedFavoritesData = [
|
|||||||
workflowRun: null,
|
workflowRun: null,
|
||||||
workflowVersionId: null,
|
workflowVersionId: null,
|
||||||
workflowVersion: null,
|
workflowVersion: null,
|
||||||
workspaceMemberId: null,
|
forWorkspaceMemberId: null,
|
||||||
workspaceMember: null,
|
forWorkspaceMember: null,
|
||||||
companyId: null,
|
companyId: null,
|
||||||
company: null,
|
company: null,
|
||||||
viewId: mockedViewsData[0].id,
|
viewId: mockedViewsData[0].id,
|
||||||
@ -82,8 +82,8 @@ export const mockedFavoritesData = [
|
|||||||
workflowRun: null,
|
workflowRun: null,
|
||||||
workflowVersionId: null,
|
workflowVersionId: null,
|
||||||
workflowVersion: null,
|
workflowVersion: null,
|
||||||
workspaceMemberId: null,
|
forWorkspaceMemberId: null,
|
||||||
workspaceMember: null,
|
forWorkspaceMember: null,
|
||||||
companyId: null,
|
companyId: null,
|
||||||
company: null,
|
company: null,
|
||||||
viewId: mockedViewsData[1].id,
|
viewId: mockedViewsData[1].id,
|
||||||
@ -115,8 +115,8 @@ export const mockedFavoritesData = [
|
|||||||
workflowRun: null,
|
workflowRun: null,
|
||||||
workflowVersionId: null,
|
workflowVersionId: null,
|
||||||
workflowVersion: null,
|
workflowVersion: null,
|
||||||
workspaceMemberId: null,
|
forWorkspaceMemberId: null,
|
||||||
workspaceMember: null,
|
forWorkspaceMember: null,
|
||||||
companyId: null,
|
companyId: null,
|
||||||
company: null,
|
company: null,
|
||||||
viewId: mockedViewsData[1].id,
|
viewId: mockedViewsData[1].id,
|
||||||
|
|||||||
@ -8413,7 +8413,7 @@ export const mockedStandardObjectMetadataQueryResult: ObjectMetadataItemsQuery =
|
|||||||
__typename: "Field",
|
__typename: "Field",
|
||||||
id: "dd7abd0e-fb7a-44b5-b445-a886451da34f",
|
id: "dd7abd0e-fb7a-44b5-b445-a886451da34f",
|
||||||
type: "UUID",
|
type: "UUID",
|
||||||
name: "workspaceMemberId",
|
name: "forWorkspaceMemberId",
|
||||||
icon: "IconCircleUser",
|
icon: "IconCircleUser",
|
||||||
isCustom: false,
|
isCustom: false,
|
||||||
isActive: true,
|
isActive: true,
|
||||||
@ -8434,7 +8434,7 @@ export const mockedStandardObjectMetadataQueryResult: ObjectMetadataItemsQuery =
|
|||||||
__typename: "Field",
|
__typename: "Field",
|
||||||
id: "b37d7cda-7edd-4fb7-8443-4cb60d16bfa5",
|
id: "b37d7cda-7edd-4fb7-8443-4cb60d16bfa5",
|
||||||
type: "RELATION",
|
type: "RELATION",
|
||||||
name: "workspaceMember",
|
name: "forWorkspaceMember",
|
||||||
icon: "IconCircleUser",
|
icon: "IconCircleUser",
|
||||||
isCustom: false,
|
isCustom: false,
|
||||||
isActive: true,
|
isActive: true,
|
||||||
@ -9240,7 +9240,7 @@ export const mockedStandardObjectMetadataQueryResult: ObjectMetadataItemsQuery =
|
|||||||
__typename: "Field",
|
__typename: "Field",
|
||||||
id: "d138fd97-afec-4b74-9f61-5932fde251b4",
|
id: "d138fd97-afec-4b74-9f61-5932fde251b4",
|
||||||
type: "UUID",
|
type: "UUID",
|
||||||
name: "workspaceMemberId",
|
name: "forWorkspaceMemberId",
|
||||||
icon: "IconCircleUser",
|
icon: "IconCircleUser",
|
||||||
isCustom: false,
|
isCustom: false,
|
||||||
isActive: true,
|
isActive: true,
|
||||||
@ -9261,7 +9261,7 @@ export const mockedStandardObjectMetadataQueryResult: ObjectMetadataItemsQuery =
|
|||||||
__typename: "Field",
|
__typename: "Field",
|
||||||
id: "0447657b-e2a8-4f8b-ad9b-aa9509ac0ac2",
|
id: "0447657b-e2a8-4f8b-ad9b-aa9509ac0ac2",
|
||||||
type: "RELATION",
|
type: "RELATION",
|
||||||
name: "workspaceMember",
|
name: "forWorkspaceMember",
|
||||||
icon: "IconCircleUser",
|
icon: "IconCircleUser",
|
||||||
isCustom: false,
|
isCustom: false,
|
||||||
isActive: true,
|
isActive: true,
|
||||||
@ -9289,7 +9289,7 @@ export const mockedStandardObjectMetadataQueryResult: ObjectMetadataItemsQuery =
|
|||||||
sourceFieldMetadata: {
|
sourceFieldMetadata: {
|
||||||
__typename: "Field",
|
__typename: "Field",
|
||||||
id: "0447657b-e2a8-4f8b-ad9b-aa9509ac0ac2",
|
id: "0447657b-e2a8-4f8b-ad9b-aa9509ac0ac2",
|
||||||
name: "workspaceMember"
|
name: "forWorkspaceMember"
|
||||||
},
|
},
|
||||||
targetObjectMetadata: {
|
targetObjectMetadata: {
|
||||||
__typename: "Object",
|
__typename: "Object",
|
||||||
|
|||||||
@ -206,7 +206,7 @@ export const TIMELINE_ACTIVITY_STANDARD_FIELD_IDS = {
|
|||||||
|
|
||||||
export const FAVORITE_STANDARD_FIELD_IDS = {
|
export const FAVORITE_STANDARD_FIELD_IDS = {
|
||||||
position: '20202020-dd26-42c6-8c3c-2a7598c204f6',
|
position: '20202020-dd26-42c6-8c3c-2a7598c204f6',
|
||||||
workspaceMember: '20202020-ce63-49cb-9676-fdc0c45892cd',
|
forWorkspaceMember: '20202020-ce63-49cb-9676-fdc0c45892cd',
|
||||||
person: '20202020-c428-4f40-b6f3-86091511c41c',
|
person: '20202020-c428-4f40-b6f3-86091511c41c',
|
||||||
company: '20202020-cff5-4682-8bf9-069169e08279',
|
company: '20202020-cff5-4682-8bf9-069169e08279',
|
||||||
opportunity: '20202020-dabc-48e1-8318-2781a2b32aa2',
|
opportunity: '20202020-dabc-48e1-8318-2781a2b32aa2',
|
||||||
@ -498,6 +498,7 @@ export const WORKFLOW_VERSION_STANDARD_FIELD_IDS = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const WORKSPACE_MEMBER_STANDARD_FIELD_IDS = {
|
export const WORKSPACE_MEMBER_STANDARD_FIELD_IDS = {
|
||||||
|
position: '20202020-1810-4591-a93c-d0df97dca843',
|
||||||
name: '20202020-e914-43a6-9c26-3603c59065f4',
|
name: '20202020-e914-43a6-9c26-3603c59065f4',
|
||||||
colorScheme: '20202020-66bc-47f2-adac-f2ef7c598b63',
|
colorScheme: '20202020-66bc-47f2-adac-f2ef7c598b63',
|
||||||
locale: '20202020-402e-4695-b169-794fa015afbe',
|
locale: '20202020-402e-4695-b169-794fa015afbe',
|
||||||
|
|||||||
@ -53,7 +53,7 @@ export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity {
|
|||||||
|
|
||||||
// Relations
|
// Relations
|
||||||
@WorkspaceRelation({
|
@WorkspaceRelation({
|
||||||
standardId: FAVORITE_STANDARD_FIELD_IDS.workspaceMember,
|
standardId: FAVORITE_STANDARD_FIELD_IDS.forWorkspaceMember,
|
||||||
type: RelationMetadataType.MANY_TO_ONE,
|
type: RelationMetadataType.MANY_TO_ONE,
|
||||||
label: msg`Workspace Member`,
|
label: msg`Workspace Member`,
|
||||||
description: msg`Favorite workspace member`,
|
description: msg`Favorite workspace member`,
|
||||||
@ -62,10 +62,10 @@ export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity {
|
|||||||
inverseSideTarget: () => WorkspaceMemberWorkspaceEntity,
|
inverseSideTarget: () => WorkspaceMemberWorkspaceEntity,
|
||||||
})
|
})
|
||||||
@WorkspaceIsNullable()
|
@WorkspaceIsNullable()
|
||||||
workspaceMember: Relation<WorkspaceMemberWorkspaceEntity>;
|
forWorkspaceMember: Relation<WorkspaceMemberWorkspaceEntity>;
|
||||||
|
|
||||||
@WorkspaceJoinColumn('workspaceMember')
|
@WorkspaceJoinColumn('forWorkspaceMember')
|
||||||
workspaceMemberId: string;
|
forWorkspaceMemberId: string;
|
||||||
|
|
||||||
@WorkspaceRelation({
|
@WorkspaceRelation({
|
||||||
standardId: FAVORITE_STANDARD_FIELD_IDS.person,
|
standardId: FAVORITE_STANDARD_FIELD_IDS.person,
|
||||||
|
|||||||
@ -82,6 +82,17 @@ export const SEARCH_FIELDS_FOR_WORKSPACE_MEMBER: FieldTypeAndNameMetadata[] = [
|
|||||||
@WorkspaceIsSystem()
|
@WorkspaceIsSystem()
|
||||||
@WorkspaceIsNotAuditLogged()
|
@WorkspaceIsNotAuditLogged()
|
||||||
export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
|
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({
|
@WorkspaceField({
|
||||||
standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.name,
|
standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.name,
|
||||||
type: FieldMetadataType.FULL_NAME,
|
type: FieldMetadataType.FULL_NAME,
|
||||||
@ -99,6 +110,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
|
|||||||
icon: 'IconColorSwatch',
|
icon: 'IconColorSwatch',
|
||||||
defaultValue: "'System'",
|
defaultValue: "'System'",
|
||||||
})
|
})
|
||||||
|
@WorkspaceIsSystem()
|
||||||
colorScheme: string;
|
colorScheme: string;
|
||||||
|
|
||||||
@WorkspaceField({
|
@WorkspaceField({
|
||||||
@ -109,6 +121,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
|
|||||||
icon: 'IconLanguage',
|
icon: 'IconLanguage',
|
||||||
defaultValue: `'${SOURCE_LOCALE}'`,
|
defaultValue: `'${SOURCE_LOCALE}'`,
|
||||||
})
|
})
|
||||||
|
@WorkspaceIsSystem()
|
||||||
locale: keyof typeof APP_LOCALES;
|
locale: keyof typeof APP_LOCALES;
|
||||||
|
|
||||||
@WorkspaceField({
|
@WorkspaceField({
|
||||||
@ -118,6 +131,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
|
|||||||
description: msg`Workspace member avatar`,
|
description: msg`Workspace member avatar`,
|
||||||
icon: 'IconFileUpload',
|
icon: 'IconFileUpload',
|
||||||
})
|
})
|
||||||
|
@WorkspaceIsSystem()
|
||||||
avatarUrl: string;
|
avatarUrl: string;
|
||||||
|
|
||||||
@WorkspaceField({
|
@WorkspaceField({
|
||||||
@ -127,6 +141,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
|
|||||||
description: msg`Related user email address`,
|
description: msg`Related user email address`,
|
||||||
icon: 'IconMail',
|
icon: 'IconMail',
|
||||||
})
|
})
|
||||||
|
@WorkspaceIsSystem()
|
||||||
userEmail: string;
|
userEmail: string;
|
||||||
|
|
||||||
@WorkspaceField({
|
@WorkspaceField({
|
||||||
@ -136,8 +151,88 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
|
|||||||
description: msg`Associated User Id`,
|
description: msg`Associated User Id`,
|
||||||
icon: 'IconCircleUsers',
|
icon: 'IconCircleUsers',
|
||||||
})
|
})
|
||||||
|
@WorkspaceIsSystem()
|
||||||
userId: string;
|
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
|
// Relations
|
||||||
@WorkspaceRelation({
|
@WorkspaceRelation({
|
||||||
standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.assignedTasks,
|
standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.assignedTasks,
|
||||||
@ -158,6 +253,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
|
|||||||
description: msg`Favorites linked to the workspace member`,
|
description: msg`Favorites linked to the workspace member`,
|
||||||
icon: 'IconHeart',
|
icon: 'IconHeart',
|
||||||
inverseSideTarget: () => FavoriteWorkspaceEntity,
|
inverseSideTarget: () => FavoriteWorkspaceEntity,
|
||||||
|
inverseSideFieldKey: 'forWorkspaceMember',
|
||||||
onDelete: RelationOnDeleteAction.CASCADE,
|
onDelete: RelationOnDeleteAction.CASCADE,
|
||||||
})
|
})
|
||||||
favorites: Relation<FavoriteWorkspaceEntity[]>;
|
favorites: Relation<FavoriteWorkspaceEntity[]>;
|
||||||
@ -262,82 +358,6 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
|
|||||||
@WorkspaceIsSystem()
|
@WorkspaceIsSystem()
|
||||||
auditLogs: Relation<AuditLogWorkspaceEntity[]>;
|
auditLogs: Relation<AuditLogWorkspaceEntity[]>;
|
||||||
|
|
||||||
@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({
|
@WorkspaceField({
|
||||||
standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.searchVector,
|
standardId: WORKSPACE_MEMBER_STANDARD_FIELD_IDS.searchVector,
|
||||||
type: FieldMetadataType.TS_VECTOR,
|
type: FieldMetadataType.TS_VECTOR,
|
||||||
|
|||||||
@ -15,7 +15,7 @@ describe('favoritesResolver (e2e)', () => {
|
|||||||
createdAt
|
createdAt
|
||||||
updatedAt
|
updatedAt
|
||||||
deletedAt
|
deletedAt
|
||||||
workspaceMemberId
|
forWorkspaceMemberId
|
||||||
personId
|
personId
|
||||||
companyId
|
companyId
|
||||||
opportunityId
|
opportunityId
|
||||||
@ -59,7 +59,7 @@ describe('favoritesResolver (e2e)', () => {
|
|||||||
expect(favorites).toHaveProperty('createdAt');
|
expect(favorites).toHaveProperty('createdAt');
|
||||||
expect(favorites).toHaveProperty('updatedAt');
|
expect(favorites).toHaveProperty('updatedAt');
|
||||||
expect(favorites).toHaveProperty('deletedAt');
|
expect(favorites).toHaveProperty('deletedAt');
|
||||||
expect(favorites).toHaveProperty('workspaceMemberId');
|
expect(favorites).toHaveProperty('forWorkspaceMemberId');
|
||||||
expect(favorites).toHaveProperty('personId');
|
expect(favorites).toHaveProperty('personId');
|
||||||
expect(favorites).toHaveProperty('companyId');
|
expect(favorites).toHaveProperty('companyId');
|
||||||
expect(favorites).toHaveProperty('opportunityId');
|
expect(favorites).toHaveProperty('opportunityId');
|
||||||
|
|||||||
@ -15,7 +15,7 @@ describe('searchFavoritesResolver (e2e)', () => {
|
|||||||
createdAt
|
createdAt
|
||||||
updatedAt
|
updatedAt
|
||||||
deletedAt
|
deletedAt
|
||||||
workspaceMemberId
|
forWorkspaceMemberId
|
||||||
personId
|
personId
|
||||||
companyId
|
companyId
|
||||||
opportunityId
|
opportunityId
|
||||||
@ -59,7 +59,7 @@ describe('searchFavoritesResolver (e2e)', () => {
|
|||||||
expect(searchFavorites).toHaveProperty('createdAt');
|
expect(searchFavorites).toHaveProperty('createdAt');
|
||||||
expect(searchFavorites).toHaveProperty('updatedAt');
|
expect(searchFavorites).toHaveProperty('updatedAt');
|
||||||
expect(searchFavorites).toHaveProperty('deletedAt');
|
expect(searchFavorites).toHaveProperty('deletedAt');
|
||||||
expect(searchFavorites).toHaveProperty('workspaceMemberId');
|
expect(searchFavorites).toHaveProperty('forWorkspaceMemberId');
|
||||||
expect(searchFavorites).toHaveProperty('personId');
|
expect(searchFavorites).toHaveProperty('personId');
|
||||||
expect(searchFavorites).toHaveProperty('companyId');
|
expect(searchFavorites).toHaveProperty('companyId');
|
||||||
expect(searchFavorites).toHaveProperty('opportunityId');
|
expect(searchFavorites).toHaveProperty('opportunityId');
|
||||||
|
|||||||
Reference in New Issue
Block a user