Added Linaria for performance optimization (#5693)
- Added Linaria to have compiled CSS on our optimized field displays - Refactored mocks for performance stories on fields - Refactored generateRecordChipData into a global context, computed only when we fetch object metadata items. - Refactored ChipFieldDisplay - Refactored PhoneFieldDisplay
This commit is contained in:
@ -0,0 +1,24 @@
|
||||
import { useMemo } from 'react';
|
||||
import { Decorator } from '@storybook/react';
|
||||
|
||||
import { PreComputedChipGeneratorsContext } from '@/object-metadata/context/PreComputedChipGeneratorsContext';
|
||||
import { getRecordChipGeneratorPerObjectPerField } from '@/object-record/utils/getRecordChipGeneratorPerObjectPerField';
|
||||
import { generatedMockObjectMetadataItems } from '~/testing/mock-data/objectMetadataItems';
|
||||
|
||||
export const ChipGeneratorsDecorator: Decorator = (Story) => {
|
||||
const chipGeneratorPerObjectPerField = useMemo(() => {
|
||||
return getRecordChipGeneratorPerObjectPerField(
|
||||
generatedMockObjectMetadataItems,
|
||||
);
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<PreComputedChipGeneratorsContext.Provider
|
||||
value={{
|
||||
chipGeneratorPerObjectPerField,
|
||||
}}
|
||||
>
|
||||
<Story />
|
||||
</PreComputedChipGeneratorsContext.Provider>
|
||||
);
|
||||
};
|
||||
@ -1,11 +1,13 @@
|
||||
import { useEffect } from 'react';
|
||||
import { useEffect, useMemo } from 'react';
|
||||
import { Decorator } from '@storybook/react';
|
||||
import { useRecoilValue, useSetRecoilState } from 'recoil';
|
||||
|
||||
import { currentUserState } from '@/auth/states/currentUserState';
|
||||
import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState';
|
||||
import { ObjectMetadataItemsLoadEffect } from '@/object-metadata/components/ObjectMetadataItemsLoadEffect';
|
||||
import { PreComputedChipGeneratorsContext } from '@/object-metadata/context/PreComputedChipGeneratorsContext';
|
||||
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
|
||||
import { getRecordChipGeneratorPerObjectPerField } from '@/object-record/utils/getRecordChipGeneratorPerObjectPerField';
|
||||
import { mockedUsersData } from '~/testing/mock-data/users';
|
||||
import { mockWorkspaceMembers } from '~/testing/mock-data/workspace-members';
|
||||
|
||||
@ -21,10 +23,20 @@ export const ObjectMetadataItemsDecorator: Decorator = (Story) => {
|
||||
setCurrentUser(mockedUsersData[0]);
|
||||
}, [setCurrentUser, setCurrentWorkspaceMember]);
|
||||
|
||||
const chipGeneratorPerObjectPerField = useMemo(() => {
|
||||
return getRecordChipGeneratorPerObjectPerField(objectMetadataItems);
|
||||
}, [objectMetadataItems]);
|
||||
|
||||
return (
|
||||
<>
|
||||
<ObjectMetadataItemsLoadEffect />
|
||||
{!!objectMetadataItems.length && <Story />}
|
||||
<PreComputedChipGeneratorsContext.Provider
|
||||
value={{
|
||||
chipGeneratorPerObjectPerField,
|
||||
}}
|
||||
>
|
||||
{!!objectMetadataItems.length && <Story />}
|
||||
</PreComputedChipGeneratorsContext.Provider>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
@ -0,0 +1,125 @@
|
||||
import { useEffect } from 'react';
|
||||
import { Decorator } from '@storybook/react';
|
||||
import { useRecoilCallback } from 'recoil';
|
||||
|
||||
import { Company } from '@/companies/types/Company';
|
||||
import { formatFieldMetadataItemAsColumnDefinition } from '@/object-metadata/utils/formatFieldMetadataItemAsColumnDefinition';
|
||||
import { isLabelIdentifierField } from '@/object-metadata/utils/isLabelIdentifierField';
|
||||
import { FieldContext } from '@/object-record/record-field/contexts/FieldContext';
|
||||
import {
|
||||
RecordFieldValueSelectorContextProvider,
|
||||
useSetRecordValue,
|
||||
} from '@/object-record/record-store/contexts/RecordFieldValueSelectorContext';
|
||||
import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState';
|
||||
import { ObjectRecord } from '@/object-record/types/ObjectRecord';
|
||||
import { Person } from '@/people/types/Person';
|
||||
import { mockedCompaniesDataV2 } from '~/testing/mock-data/companiesV2';
|
||||
import { generatedMockObjectMetadataItems } from '~/testing/mock-data/objectMetadataItems';
|
||||
import { mockPeopleDataV2 } from '~/testing/mock-data/peopleV2';
|
||||
import { isDefined } from '~/utils/isDefined';
|
||||
|
||||
const RecordMockSetterEffect = ({
|
||||
companies,
|
||||
people,
|
||||
}: {
|
||||
companies: Company[];
|
||||
people: Person[];
|
||||
}) => {
|
||||
const setRecordValue = useSetRecordValue();
|
||||
|
||||
const setRecordInBothStores = useRecoilCallback(
|
||||
({ set }) =>
|
||||
(record: ObjectRecord) => {
|
||||
set(recordStoreFamilyState(record.id), record);
|
||||
setRecordValue(record.id, record);
|
||||
},
|
||||
[setRecordValue],
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
for (const company of companies) {
|
||||
setRecordInBothStores(company);
|
||||
}
|
||||
|
||||
for (const person of people) {
|
||||
setRecordInBothStores(person);
|
||||
}
|
||||
}, [setRecordInBothStores, companies, people]);
|
||||
|
||||
return null;
|
||||
};
|
||||
|
||||
export const getFieldDecorator =
|
||||
(
|
||||
objectNameSingular: 'company' | 'person',
|
||||
fieldName: string,
|
||||
fieldValue?: any,
|
||||
): Decorator =>
|
||||
(Story) => {
|
||||
const companies =
|
||||
objectNameSingular === 'company' && isDefined(fieldValue)
|
||||
? [
|
||||
{ ...mockedCompaniesDataV2[0], [fieldName]: fieldValue },
|
||||
...mockedCompaniesDataV2.slice(1),
|
||||
]
|
||||
: mockedCompaniesDataV2;
|
||||
|
||||
const people =
|
||||
objectNameSingular === 'person' && isDefined(fieldValue)
|
||||
? [
|
||||
{ ...mockPeopleDataV2[0], [fieldName]: fieldValue },
|
||||
...mockPeopleDataV2.slice(1),
|
||||
]
|
||||
: mockPeopleDataV2;
|
||||
|
||||
const record = objectNameSingular === 'company' ? companies[0] : people[0];
|
||||
|
||||
if (isDefined(fieldValue)) {
|
||||
(record as any)[fieldName] = fieldValue;
|
||||
}
|
||||
|
||||
const objectMetadataItem = generatedMockObjectMetadataItems.find(
|
||||
(objectMetadataItem) =>
|
||||
objectMetadataItem.nameSingular === objectNameSingular,
|
||||
);
|
||||
|
||||
const fieldMetadataItem = objectMetadataItem?.fields.find(
|
||||
(field) => field.name === fieldName,
|
||||
);
|
||||
|
||||
if (!isDefined(objectMetadataItem)) {
|
||||
throw new Error(`Object ${objectNameSingular} not found`);
|
||||
}
|
||||
|
||||
if (!isDefined(fieldMetadataItem)) {
|
||||
throw new Error(
|
||||
`Field ${fieldName} not found in object ${objectNameSingular}`,
|
||||
);
|
||||
}
|
||||
|
||||
const isLabelIdentifier = isLabelIdentifierField({
|
||||
fieldMetadataItem,
|
||||
objectMetadataItem,
|
||||
});
|
||||
|
||||
return (
|
||||
<RecordFieldValueSelectorContextProvider>
|
||||
<FieldContext.Provider
|
||||
value={{
|
||||
entityId: record.id,
|
||||
basePathToShowPage: '/object-record/',
|
||||
isLabelIdentifier,
|
||||
fieldDefinition: formatFieldMetadataItemAsColumnDefinition({
|
||||
field: fieldMetadataItem,
|
||||
position: record.position ?? 0,
|
||||
objectMetadataItem,
|
||||
}),
|
||||
hotkeyScope: 'hotkey-scope',
|
||||
}}
|
||||
>
|
||||
<RecordMockSetterEffect companies={companies} people={people} />
|
||||
<Story />
|
||||
</FieldContext.Provider>
|
||||
</RecordFieldValueSelectorContextProvider>
|
||||
);
|
||||
};
|
||||
@ -0,0 +1,78 @@
|
||||
import { ReactNode } from 'react';
|
||||
|
||||
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||
import { formatFieldMetadataItemAsColumnDefinition } from '@/object-metadata/utils/formatFieldMetadataItemAsColumnDefinition';
|
||||
import { getBasePathToShowPage } from '@/object-metadata/utils/getBasePathToShowPage';
|
||||
import {
|
||||
FieldContext,
|
||||
RecordUpdateHook,
|
||||
} from '@/object-record/record-field/contexts/FieldContext';
|
||||
import { InlineCellHotkeyScope } from '@/object-record/record-inline-cell/types/InlineCellHotkeyScope';
|
||||
|
||||
export const useMockFieldContext = ({
|
||||
clearable,
|
||||
fieldMetadataName,
|
||||
fieldPosition,
|
||||
isLabelIdentifier = false,
|
||||
objectNameSingular,
|
||||
objectRecordId,
|
||||
customHotkeyScope,
|
||||
}: {
|
||||
clearable?: boolean;
|
||||
fieldMetadataName: string;
|
||||
fieldPosition: number;
|
||||
isLabelIdentifier?: boolean;
|
||||
objectNameSingular: string;
|
||||
objectRecordId: string;
|
||||
customHotkeyScope?: string;
|
||||
}) => {
|
||||
const { objectMetadataItem } = useObjectMetadataItem({
|
||||
objectNameSingular,
|
||||
});
|
||||
|
||||
const basePathToShowPage = getBasePathToShowPage({
|
||||
objectNameSingular,
|
||||
});
|
||||
|
||||
const fieldMetadataItem = objectMetadataItem?.fields.find(
|
||||
(field) => field.name === fieldMetadataName,
|
||||
);
|
||||
|
||||
const useUpdateOneObjectMutation: RecordUpdateHook = () => {
|
||||
const updateEntity = () => {};
|
||||
|
||||
return [updateEntity, { loading: false }];
|
||||
};
|
||||
|
||||
const FieldContextProvider =
|
||||
fieldMetadataItem && objectMetadataItem
|
||||
? ({ children }: { children: ReactNode }) => (
|
||||
<FieldContext.Provider
|
||||
key={objectRecordId + fieldMetadataItem.id}
|
||||
value={{
|
||||
basePathToShowPage: isLabelIdentifier
|
||||
? basePathToShowPage
|
||||
: undefined,
|
||||
entityId: objectRecordId,
|
||||
recoilScopeId: objectRecordId + fieldMetadataItem.id,
|
||||
isLabelIdentifier,
|
||||
fieldDefinition: formatFieldMetadataItemAsColumnDefinition({
|
||||
field: fieldMetadataItem,
|
||||
position: fieldPosition,
|
||||
objectMetadataItem,
|
||||
}),
|
||||
useUpdateRecord: useUpdateOneObjectMutation,
|
||||
hotkeyScope:
|
||||
customHotkeyScope ?? InlineCellHotkeyScope.InlineCell,
|
||||
clearable,
|
||||
}}
|
||||
>
|
||||
{children}
|
||||
</FieldContext.Provider>
|
||||
)
|
||||
: undefined;
|
||||
|
||||
return {
|
||||
FieldContextProvider,
|
||||
};
|
||||
};
|
||||
493
packages/twenty-front/src/testing/mock-data/companiesV2.ts
Normal file
493
packages/twenty-front/src/testing/mock-data/companiesV2.ts
Normal file
@ -0,0 +1,493 @@
|
||||
import { Company } from '@/companies/types/Company';
|
||||
import { Favorite } from '@/favorites/types/Favorite';
|
||||
import { WorkspaceMember } from '@/workspace-member/types/WorkspaceMember';
|
||||
import { mockedCompaniesData } from '~/testing/mock-data/companies';
|
||||
|
||||
type MockedCompanyV2 = Omit<Company, 'deletedAt'> & {
|
||||
accountOwner: WorkspaceMember | null;
|
||||
Favorite?: Pick<Favorite, 'id'> | null;
|
||||
};
|
||||
|
||||
export const mockedCompaniesDataV2: Array<MockedCompanyV2> = [
|
||||
{
|
||||
__typename: 'Company',
|
||||
domainName: 'paris.com',
|
||||
name: 'Test',
|
||||
employees: null,
|
||||
address: 'Paris France',
|
||||
createdAt: '2024-05-27T11:23:05.954Z',
|
||||
id: 'd55c240e-e4e0-4248-b56d-8004d1218a9c',
|
||||
position: 6.109375,
|
||||
annualRecurringRevenue: {
|
||||
__typename: 'Currency',
|
||||
amountMicros: 1000000000,
|
||||
currencyCode: 'USD',
|
||||
},
|
||||
linkedinLink: {
|
||||
__typename: 'Link',
|
||||
label: '',
|
||||
url: 'paris.com',
|
||||
},
|
||||
accountOwner: {
|
||||
__typename: 'WorkspaceMember',
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-1553-45c6-a028-5a9064cce07f',
|
||||
colorScheme: 'Light',
|
||||
updatedAt: '2024-05-01T13:16:29.046Z',
|
||||
locale: 'en',
|
||||
avatarUrl: '',
|
||||
userId: '20202020-7169-42cf-bc47-1cfef15264b8',
|
||||
userEmail: 'phil.schiler@apple.dev',
|
||||
name: {
|
||||
__typename: 'FullName',
|
||||
firstName: 'Phil',
|
||||
lastName: 'Shiler',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
__typename: 'Company',
|
||||
domainName: 'google.com',
|
||||
name: 'Google',
|
||||
employees: 10202,
|
||||
address: 'Paris France',
|
||||
createdAt: '2024-05-21T13:16:29.000Z',
|
||||
id: '20202020-c21e-4ec2-873b-de4264d89025',
|
||||
position: 7.5,
|
||||
annualRecurringRevenue: {
|
||||
__typename: 'Currency',
|
||||
amountMicros: 1001000000,
|
||||
currencyCode: 'USD',
|
||||
},
|
||||
linkedinLink: {
|
||||
__typename: 'Link',
|
||||
label: '',
|
||||
url: '',
|
||||
},
|
||||
accountOwner: {
|
||||
__typename: 'WorkspaceMember',
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-0687-4c41-b707-ed1bfca972a7',
|
||||
colorScheme: 'Light',
|
||||
updatedAt: '2024-05-30T09:00:31.127Z',
|
||||
locale: 'en',
|
||||
avatarUrl: '',
|
||||
userId: '20202020-9e3b-46d4-a556-88b9ddc2b034',
|
||||
userEmail: 'tim@apple.dev',
|
||||
name: {
|
||||
__typename: 'FullName',
|
||||
firstName: 'Tim',
|
||||
lastName: 'Apple',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
__typename: 'Company',
|
||||
domainName: 'hasura.io',
|
||||
name: 'Hasura',
|
||||
employees: 102938102938,
|
||||
address: '',
|
||||
createdAt: '2024-05-16T13:16:29.000Z',
|
||||
id: '20202020-f86b-419f-b794-02319abe8637',
|
||||
position: 10,
|
||||
annualRecurringRevenue: {
|
||||
__typename: 'Currency',
|
||||
amountMicros: null,
|
||||
currencyCode: '',
|
||||
},
|
||||
linkedinLink: {
|
||||
__typename: 'Link',
|
||||
label: '',
|
||||
url: '',
|
||||
},
|
||||
accountOwner: {
|
||||
__typename: 'WorkspaceMember',
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-77d5-4cb6-b60a-f4a835a85d61',
|
||||
colorScheme: 'Light',
|
||||
updatedAt: '2024-05-01T13:16:29.046Z',
|
||||
locale: 'en',
|
||||
avatarUrl: '',
|
||||
userId: '20202020-3957-4908-9c36-2929a23f8357',
|
||||
userEmail: 'jony.ive@apple.dev',
|
||||
name: {
|
||||
__typename: 'FullName',
|
||||
firstName: 'Jony',
|
||||
lastName: 'Ive',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
__typename: 'Company',
|
||||
domainName: 'netflix.com',
|
||||
name: 'Netflix',
|
||||
employees: null,
|
||||
address: '',
|
||||
createdAt: '2024-05-15T13:16:29.000Z',
|
||||
id: '20202020-707e-44dc-a1d2-30030bf1a944',
|
||||
position: 7,
|
||||
annualRecurringRevenue: {
|
||||
__typename: 'Currency',
|
||||
amountMicros: 2000000000,
|
||||
currencyCode: 'USD',
|
||||
},
|
||||
linkedinLink: {
|
||||
__typename: 'Link',
|
||||
label: '',
|
||||
url: '',
|
||||
},
|
||||
accountOwner: {
|
||||
__typename: 'WorkspaceMember',
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-1553-45c6-a028-5a9064cce07f',
|
||||
colorScheme: 'Light',
|
||||
updatedAt: '2024-05-01T13:16:29.046Z',
|
||||
locale: 'en',
|
||||
avatarUrl: '',
|
||||
userId: '20202020-7169-42cf-bc47-1cfef15264b8',
|
||||
userEmail: 'phil.schiler@apple.dev',
|
||||
name: {
|
||||
__typename: 'FullName',
|
||||
firstName: 'Phil',
|
||||
lastName: 'Shiler',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
__typename: 'Company',
|
||||
domainName: 'claap.io',
|
||||
name: 'Claap',
|
||||
employees: 2131920,
|
||||
address: 'asdasd',
|
||||
createdAt: '2024-05-10T13:16:29.000Z',
|
||||
id: '20202020-cfbf-4156-a790-e39854dcd4eb',
|
||||
position: 9,
|
||||
annualRecurringRevenue: {
|
||||
__typename: 'Currency',
|
||||
amountMicros: null,
|
||||
currencyCode: '',
|
||||
},
|
||||
linkedinLink: {
|
||||
__typename: 'Link',
|
||||
label: '',
|
||||
url: 'asmdlkasd',
|
||||
},
|
||||
accountOwner: {
|
||||
__typename: 'WorkspaceMember',
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-0687-4c41-b707-ed1bfca972a7',
|
||||
colorScheme: 'Light',
|
||||
updatedAt: '2024-05-30T09:00:31.127Z',
|
||||
locale: 'en',
|
||||
avatarUrl: '',
|
||||
userId: '20202020-9e3b-46d4-a556-88b9ddc2b034',
|
||||
userEmail: 'tim@apple.dev',
|
||||
name: {
|
||||
__typename: 'FullName',
|
||||
firstName: 'Tim',
|
||||
lastName: 'Apple',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
__typename: 'Company',
|
||||
domainName: 'libeo.io',
|
||||
name: 'Libeo',
|
||||
employees: 1239819238,
|
||||
address: '',
|
||||
createdAt: '2024-05-09T13:16:29.000Z',
|
||||
id: '20202020-3f74-492d-a101-2a70f50a1645',
|
||||
position: 8,
|
||||
annualRecurringRevenue: {
|
||||
__typename: 'Currency',
|
||||
amountMicros: null,
|
||||
currencyCode: '',
|
||||
},
|
||||
linkedinLink: {
|
||||
__typename: 'Link',
|
||||
label: '',
|
||||
url: '',
|
||||
},
|
||||
accountOwner: {
|
||||
__typename: 'WorkspaceMember',
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-1553-45c6-a028-5a9064cce07f',
|
||||
colorScheme: 'Light',
|
||||
updatedAt: '2024-05-01T13:16:29.046Z',
|
||||
locale: 'en',
|
||||
avatarUrl: '',
|
||||
userId: '20202020-7169-42cf-bc47-1cfef15264b8',
|
||||
userEmail: 'phil.schiler@apple.dev',
|
||||
name: {
|
||||
__typename: 'FullName',
|
||||
firstName: 'Phil',
|
||||
lastName: 'Shiler',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
__typename: 'Company',
|
||||
domainName: 'qonto.com',
|
||||
name: 'Qonto',
|
||||
employees: 123123123,
|
||||
address: '',
|
||||
createdAt: '2024-05-08T13:16:29.000Z',
|
||||
id: '20202020-0713-40a5-8216-82802401d33e',
|
||||
position: 9.5,
|
||||
annualRecurringRevenue: {
|
||||
__typename: 'Currency',
|
||||
amountMicros: null,
|
||||
currencyCode: '',
|
||||
},
|
||||
linkedinLink: {
|
||||
__typename: 'Link',
|
||||
label: '',
|
||||
url: '',
|
||||
},
|
||||
accountOwner: {
|
||||
__typename: 'WorkspaceMember',
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-1553-45c6-a028-5a9064cce07f',
|
||||
colorScheme: 'Light',
|
||||
updatedAt: '2024-05-01T13:16:29.046Z',
|
||||
locale: 'en',
|
||||
avatarUrl: '',
|
||||
userId: '20202020-7169-42cf-bc47-1cfef15264b8',
|
||||
userEmail: 'phil.schiler@apple.dev',
|
||||
name: {
|
||||
__typename: 'FullName',
|
||||
firstName: 'Phil',
|
||||
lastName: 'Shiler',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
__typename: 'Company',
|
||||
domainName: 'wework.com',
|
||||
name: 'Wework',
|
||||
employees: 123123123,
|
||||
address: '',
|
||||
createdAt: '2024-05-08T13:16:29.000Z',
|
||||
id: '20202020-5518-4553-9433-42d8eb82834b',
|
||||
position: 11,
|
||||
annualRecurringRevenue: {
|
||||
__typename: 'Currency',
|
||||
amountMicros: null,
|
||||
currencyCode: '',
|
||||
},
|
||||
linkedinLink: {
|
||||
__typename: 'Link',
|
||||
label: '',
|
||||
url: '',
|
||||
},
|
||||
accountOwner: {
|
||||
__typename: 'WorkspaceMember',
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-0687-4c41-b707-ed1bfca972a7',
|
||||
colorScheme: 'Light',
|
||||
updatedAt: '2024-05-30T09:00:31.127Z',
|
||||
locale: 'en',
|
||||
avatarUrl: '',
|
||||
userId: '20202020-9e3b-46d4-a556-88b9ddc2b034',
|
||||
userEmail: 'tim@apple.dev',
|
||||
name: {
|
||||
__typename: 'FullName',
|
||||
firstName: 'Tim',
|
||||
lastName: 'Apple',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
__typename: 'Company',
|
||||
domainName: 'linkedin.com',
|
||||
name: 'Linkedin',
|
||||
employees: 10102,
|
||||
accountOwner: null,
|
||||
address: '',
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-3ec3-4fe3-8997-b76aa0bfa408',
|
||||
position: 1,
|
||||
annualRecurringRevenue: {
|
||||
__typename: 'Currency',
|
||||
amountMicros: null,
|
||||
currencyCode: '',
|
||||
},
|
||||
linkedinLink: {
|
||||
__typename: 'Link',
|
||||
label: 'adasd',
|
||||
url: 'adasd',
|
||||
},
|
||||
},
|
||||
{
|
||||
__typename: 'Company',
|
||||
domainName: 'airbnb.com',
|
||||
name: 'Airbnb',
|
||||
employees: 123333,
|
||||
accountOwner: null,
|
||||
address: '',
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-171e-4bcc-9cf7-43448d6fb278',
|
||||
position: 5,
|
||||
annualRecurringRevenue: {
|
||||
__typename: 'Currency',
|
||||
amountMicros: null,
|
||||
currencyCode: '',
|
||||
},
|
||||
linkedinLink: {
|
||||
__typename: 'Link',
|
||||
label: '',
|
||||
url: '',
|
||||
},
|
||||
},
|
||||
{
|
||||
__typename: 'Company',
|
||||
domainName: 'samsung.com',
|
||||
name: 'Samsung',
|
||||
employees: 10000,
|
||||
address: '',
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-f79e-40dd-bd06-c36e6abb4678',
|
||||
position: 12,
|
||||
annualRecurringRevenue: {
|
||||
__typename: 'Currency',
|
||||
amountMicros: null,
|
||||
currencyCode: '',
|
||||
},
|
||||
linkedinLink: {
|
||||
__typename: 'Link',
|
||||
label: '',
|
||||
url: '',
|
||||
},
|
||||
accountOwner: {
|
||||
__typename: 'WorkspaceMember',
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-1553-45c6-a028-5a9064cce07f',
|
||||
colorScheme: 'Light',
|
||||
updatedAt: '2024-05-01T13:16:29.046Z',
|
||||
locale: 'en',
|
||||
avatarUrl: '',
|
||||
userId: '20202020-7169-42cf-bc47-1cfef15264b8',
|
||||
userEmail: 'phil.schiler@apple.dev',
|
||||
name: {
|
||||
__typename: 'FullName',
|
||||
firstName: 'Phil',
|
||||
lastName: 'Shiler',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
__typename: 'Company',
|
||||
domainName: 'algolia.com',
|
||||
name: 'Algolia',
|
||||
employees: 10000,
|
||||
address: '',
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-1455-4c57-afaf-dd5dc086361d',
|
||||
position: 13,
|
||||
annualRecurringRevenue: {
|
||||
__typename: 'Currency',
|
||||
amountMicros: null,
|
||||
currencyCode: '',
|
||||
},
|
||||
linkedinLink: {
|
||||
__typename: 'Link',
|
||||
label: '',
|
||||
url: '',
|
||||
},
|
||||
accountOwner: {
|
||||
__typename: 'WorkspaceMember',
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-77d5-4cb6-b60a-f4a835a85d61',
|
||||
colorScheme: 'Light',
|
||||
updatedAt: '2024-05-01T13:16:29.046Z',
|
||||
locale: 'en',
|
||||
avatarUrl: '',
|
||||
userId: '20202020-3957-4908-9c36-2929a23f8357',
|
||||
userEmail: 'jony.ive@apple.dev',
|
||||
name: {
|
||||
__typename: 'FullName',
|
||||
firstName: 'Jony',
|
||||
lastName: 'Ive',
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
__typename: 'Company',
|
||||
domainName: 'facebook.com',
|
||||
name: 'Facebook',
|
||||
employees: 220323,
|
||||
accountOwner: null,
|
||||
address: '',
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-5d81-46d6-bf83-f7fd33ea6102',
|
||||
position: 6.0625,
|
||||
annualRecurringRevenue: {
|
||||
__typename: 'Currency',
|
||||
amountMicros: null,
|
||||
currencyCode: '',
|
||||
},
|
||||
linkedinLink: {
|
||||
__typename: 'Link',
|
||||
label: '',
|
||||
url: 'asdasd',
|
||||
},
|
||||
},
|
||||
{
|
||||
__typename: 'Company',
|
||||
domainName: 'microsoft.com',
|
||||
name: 'Microsoft',
|
||||
employees: 10000,
|
||||
address: '',
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-ed89-413a-b31a-962986e67bb4',
|
||||
position: 6.09375,
|
||||
annualRecurringRevenue: {
|
||||
__typename: 'Currency',
|
||||
amountMicros: 10000000000,
|
||||
currencyCode: 'USD',
|
||||
},
|
||||
linkedinLink: {
|
||||
__typename: 'Link',
|
||||
label: '',
|
||||
url: '',
|
||||
},
|
||||
accountOwner: {
|
||||
__typename: 'WorkspaceMember',
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-0687-4c41-b707-ed1bfca972a7',
|
||||
colorScheme: 'Light',
|
||||
updatedAt: '2024-05-30T09:00:31.127Z',
|
||||
locale: 'en',
|
||||
avatarUrl: '',
|
||||
userId: '20202020-9e3b-46d4-a556-88b9ddc2b034',
|
||||
userEmail: 'tim@apple.dev',
|
||||
name: {
|
||||
__typename: 'FullName',
|
||||
firstName: 'Tim',
|
||||
lastName: 'Apple',
|
||||
},
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
export const mockedDuplicateCompanyData: MockedCompanyV2 = {
|
||||
...mockedCompaniesData[0],
|
||||
id: '8b40856a-2ec9-4c03-8bc0-c032c89e1824',
|
||||
};
|
||||
|
||||
export const mockedEmptyCompanyData = {
|
||||
id: '9231e6ee-4cc2-4c7b-8c55-dff16f4d968a',
|
||||
name: '',
|
||||
domainName: '',
|
||||
address: '',
|
||||
accountOwner: null,
|
||||
annualRecurringRevenue: null,
|
||||
createdAt: null,
|
||||
updatedAt: null,
|
||||
employees: null,
|
||||
idealCustomerProfile: null,
|
||||
linkedinLink: null,
|
||||
xLink: null,
|
||||
_activityCount: null,
|
||||
__typename: 'Company',
|
||||
};
|
||||
@ -13249,3 +13249,4 @@ export const mockedStandardObjectMetadataQueryResult: ObjectMetadataItemsQuery =
|
||||
] as ObjectEdge[],
|
||||
},
|
||||
} as ObjectMetadataItemsQuery;
|
||||
|
||||
|
||||
@ -3,6 +3,13 @@ import {
|
||||
FieldMetadataType,
|
||||
RelationMetadataType,
|
||||
} from '~/generated-metadata/graphql';
|
||||
import { mockedStandardObjectMetadataQueryResult } from '~/testing/mock-data/generated/standard-metadata-query-result';
|
||||
|
||||
export const generatedMockObjectMetadataItems: ObjectMetadataItem[] =
|
||||
mockedStandardObjectMetadataQueryResult.objects.edges.map((edge) => ({
|
||||
...edge.node,
|
||||
fields: edge.node.fields.edges.map((edge) => edge.node),
|
||||
}));
|
||||
|
||||
export const mockObjectMetadataItem: ObjectMetadataItem = {
|
||||
__typename: 'object',
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
import { Company } from '@/companies/types/Company';
|
||||
import { Person } from '@/people/types/Person';
|
||||
|
||||
type RequiredAndNotNull<T> = {
|
||||
export type RequiredAndNotNull<T> = {
|
||||
[P in keyof T]-?: Exclude<T[P], null | undefined>;
|
||||
};
|
||||
|
||||
type MockedPerson = RequiredAndNotNull<
|
||||
export type MockedPerson = RequiredAndNotNull<
|
||||
Pick<
|
||||
Person,
|
||||
| '__typename'
|
||||
|
||||
533
packages/twenty-front/src/testing/mock-data/peopleV2.ts
Normal file
533
packages/twenty-front/src/testing/mock-data/peopleV2.ts
Normal file
@ -0,0 +1,533 @@
|
||||
import { Company } from '@/companies/types/Company';
|
||||
import { Person } from '@/people/types/Person';
|
||||
|
||||
export type MockedPersonV2 = Pick<
|
||||
Person,
|
||||
| '__typename'
|
||||
| 'id'
|
||||
| 'name'
|
||||
| 'linkedinLink'
|
||||
| 'xLink'
|
||||
| 'links'
|
||||
| 'jobTitle'
|
||||
| 'email'
|
||||
| 'phone'
|
||||
| 'city'
|
||||
| 'avatarUrl'
|
||||
| 'createdAt'
|
||||
| 'updatedAt'
|
||||
| 'companyId'
|
||||
| 'position'
|
||||
> & {
|
||||
company?: Company;
|
||||
};
|
||||
|
||||
export const mockPeopleDataV2: MockedPersonV2[] = [
|
||||
{
|
||||
__typename: 'Person',
|
||||
city: 'Seattle',
|
||||
jobTitle: '',
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-1c0e-494c-a1b6-85b1c6fefaa5',
|
||||
email: 'christoph.calisto@linkedin.com',
|
||||
phone: '+33789012345',
|
||||
position: 1,
|
||||
name: {
|
||||
__typename: 'FullName',
|
||||
firstName: 'Christoph',
|
||||
lastName: 'Callisto',
|
||||
},
|
||||
linkedinLink: { __typename: 'Link', label: '', url: 'asd' },
|
||||
xLink: { __typename: 'Link', label: '', url: 'asd' },
|
||||
company: {
|
||||
__typename: 'Company',
|
||||
domainName: 'linkedin.com',
|
||||
name: 'Linkedin',
|
||||
employees: 10102,
|
||||
accountOwnerId: null,
|
||||
address: '',
|
||||
idealCustomerProfile: false,
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-3ec3-4fe3-8997-b76aa0bfa408',
|
||||
position: 1,
|
||||
updatedAt: '2024-05-23T13:21:41.159Z',
|
||||
xLink: { __typename: 'Link', label: '', url: '' },
|
||||
annualRecurringRevenue: {
|
||||
__typename: 'Currency',
|
||||
amountMicros: null,
|
||||
currencyCode: '',
|
||||
},
|
||||
linkedinLink: { __typename: 'Link', label: 'adasd', url: 'adasd' },
|
||||
},
|
||||
},
|
||||
{
|
||||
__typename: 'Person',
|
||||
city: 'Los Angeles',
|
||||
jobTitle: '@',
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-ac73-4797-824e-87a1f5aea9e0',
|
||||
email: 'sylvie.palmer@linkedin.com',
|
||||
phone: '+33780123456',
|
||||
position: 2,
|
||||
name: { __typename: 'FullName', firstName: 'Sylvie', lastName: 'Palmer' },
|
||||
linkedinLink: { __typename: 'Link', label: '', url: '' },
|
||||
xLink: { __typename: 'Link', label: '', url: '' },
|
||||
company: {
|
||||
__typename: 'Company',
|
||||
domainName: 'algolia.com',
|
||||
name: 'Algolia',
|
||||
employees: 10000,
|
||||
accountOwnerId: '20202020-77d5-4cb6-b60a-f4a835a85d61',
|
||||
address: '',
|
||||
idealCustomerProfile: false,
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-1455-4c57-afaf-dd5dc086361d',
|
||||
position: 13,
|
||||
updatedAt: '2024-05-28T15:52:31.839Z',
|
||||
xLink: { __typename: 'Link', label: '', url: '' },
|
||||
annualRecurringRevenue: {
|
||||
__typename: 'Currency',
|
||||
amountMicros: null,
|
||||
currencyCode: '',
|
||||
},
|
||||
linkedinLink: { __typename: 'Link', label: '', url: '' },
|
||||
},
|
||||
},
|
||||
{
|
||||
__typename: 'Person',
|
||||
city: 'Seattle',
|
||||
jobTitle: '',
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-f517-42fd-80ae-14173b3b70ae',
|
||||
email: 'christopher.gonzalez@qonto.com',
|
||||
phone: '+33789012345',
|
||||
position: 3,
|
||||
name: {
|
||||
__typename: 'FullName',
|
||||
firstName: 'Christopher',
|
||||
lastName: 'Gonzalez',
|
||||
},
|
||||
linkedinLink: { __typename: 'Link', label: '', url: '' },
|
||||
xLink: { __typename: 'Link', label: '', url: '' },
|
||||
company: {
|
||||
__typename: 'Company',
|
||||
domainName: 'qonto.com',
|
||||
name: 'Qonto',
|
||||
employees: 123123123,
|
||||
accountOwnerId: '20202020-1553-45c6-a028-5a9064cce07f',
|
||||
address: '',
|
||||
idealCustomerProfile: false,
|
||||
createdAt: '2024-05-08T13:16:29.000Z',
|
||||
id: '20202020-0713-40a5-8216-82802401d33e',
|
||||
position: 9.5,
|
||||
updatedAt: '2024-05-28T15:52:46.961Z',
|
||||
xLink: { __typename: 'Link', label: '', url: '' },
|
||||
annualRecurringRevenue: {
|
||||
__typename: 'Currency',
|
||||
amountMicros: null,
|
||||
currencyCode: '',
|
||||
},
|
||||
linkedinLink: { __typename: 'Link', label: '', url: '' },
|
||||
},
|
||||
},
|
||||
{
|
||||
__typename: 'Person',
|
||||
city: 'Los Angeles',
|
||||
jobTitle: '',
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-eee1-4690-ad2c-8619e5b56a2e',
|
||||
email: 'ashley.parker@qonto.com',
|
||||
phone: '+33780123456',
|
||||
position: 4,
|
||||
name: { __typename: 'FullName', firstName: 'Ashley', lastName: 'Parker' },
|
||||
linkedinLink: { __typename: 'Link', label: '', url: '' },
|
||||
xLink: { __typename: 'Link', label: '', url: '' },
|
||||
company: {
|
||||
__typename: 'Company',
|
||||
domainName: 'qonto.com',
|
||||
name: 'Qonto',
|
||||
employees: 123123123,
|
||||
accountOwnerId: '20202020-1553-45c6-a028-5a9064cce07f',
|
||||
address: '',
|
||||
idealCustomerProfile: false,
|
||||
createdAt: '2024-05-08T13:16:29.000Z',
|
||||
id: '20202020-0713-40a5-8216-82802401d33e',
|
||||
position: 9.5,
|
||||
updatedAt: '2024-05-28T15:52:46.961Z',
|
||||
xLink: { __typename: 'Link', label: '', url: '' },
|
||||
annualRecurringRevenue: {
|
||||
__typename: 'Currency',
|
||||
amountMicros: null,
|
||||
currencyCode: '',
|
||||
},
|
||||
linkedinLink: { __typename: 'Link', label: '', url: '' },
|
||||
},
|
||||
},
|
||||
{
|
||||
__typename: 'Person',
|
||||
city: 'Seattle',
|
||||
jobTitle: '',
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-6784-4449-afdf-dc62cb8702f2',
|
||||
email: 'nicholas.wright@microsoft.com',
|
||||
phone: '+33781234567',
|
||||
position: 5,
|
||||
name: { __typename: 'FullName', firstName: 'Nicholas', lastName: 'Wright' },
|
||||
linkedinLink: { __typename: 'Link', label: '', url: '' },
|
||||
xLink: { __typename: 'Link', label: '', url: '' },
|
||||
company: {
|
||||
__typename: 'Company',
|
||||
domainName: 'microsoft.com',
|
||||
name: 'Microsoft',
|
||||
employees: 10000,
|
||||
accountOwnerId: '20202020-0687-4c41-b707-ed1bfca972a7',
|
||||
address: '',
|
||||
idealCustomerProfile: false,
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-ed89-413a-b31a-962986e67bb4',
|
||||
position: 6.09375,
|
||||
updatedAt: '2024-05-28T15:52:35.621Z',
|
||||
xLink: { __typename: 'Link', label: '', url: '' },
|
||||
annualRecurringRevenue: {
|
||||
__typename: 'Currency',
|
||||
amountMicros: 10000000000,
|
||||
currencyCode: 'USD',
|
||||
},
|
||||
linkedinLink: { __typename: 'Link', label: '', url: '' },
|
||||
},
|
||||
},
|
||||
{
|
||||
__typename: 'Person',
|
||||
city: 'New York',
|
||||
jobTitle: '',
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-490f-4466-8391-733cfd66a0c8',
|
||||
email: 'isabella.scott@microsoft.com',
|
||||
phone: '+33782345678',
|
||||
position: 6,
|
||||
name: { __typename: 'FullName', firstName: 'Isabella', lastName: 'Scott' },
|
||||
linkedinLink: { __typename: 'Link', label: '', url: '' },
|
||||
xLink: { __typename: 'Link', label: '', url: '' },
|
||||
company: {
|
||||
__typename: 'Company',
|
||||
domainName: 'microsoft.com',
|
||||
name: 'Microsoft',
|
||||
employees: 10000,
|
||||
accountOwnerId: '20202020-0687-4c41-b707-ed1bfca972a7',
|
||||
address: '',
|
||||
idealCustomerProfile: false,
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-ed89-413a-b31a-962986e67bb4',
|
||||
position: 6.09375,
|
||||
updatedAt: '2024-05-28T15:52:35.621Z',
|
||||
xLink: { __typename: 'Link', label: '', url: '' },
|
||||
annualRecurringRevenue: {
|
||||
__typename: 'Currency',
|
||||
amountMicros: 10000000000,
|
||||
currencyCode: 'USD',
|
||||
},
|
||||
linkedinLink: { __typename: 'Link', label: '', url: '' },
|
||||
},
|
||||
},
|
||||
{
|
||||
__typename: 'Person',
|
||||
city: 'Seattle',
|
||||
jobTitle: '',
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-80f1-4dff-b570-a74942528de3',
|
||||
email: 'matthew.green@microsoft.com',
|
||||
phone: '+33783456789',
|
||||
position: 7,
|
||||
name: { __typename: 'FullName', firstName: 'Matthew', lastName: 'Green' },
|
||||
linkedinLink: { __typename: 'Link', label: '', url: '' },
|
||||
xLink: { __typename: 'Link', label: '', url: '' },
|
||||
company: {
|
||||
__typename: 'Company',
|
||||
domainName: 'microsoft.com',
|
||||
name: 'Microsoft',
|
||||
employees: 10000,
|
||||
accountOwnerId: '20202020-0687-4c41-b707-ed1bfca972a7',
|
||||
address: '',
|
||||
idealCustomerProfile: false,
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-ed89-413a-b31a-962986e67bb4',
|
||||
position: 6.09375,
|
||||
updatedAt: '2024-05-28T15:52:35.621Z',
|
||||
xLink: { __typename: 'Link', label: '', url: '' },
|
||||
annualRecurringRevenue: {
|
||||
__typename: 'Currency',
|
||||
amountMicros: 10000000000,
|
||||
currencyCode: 'USD',
|
||||
},
|
||||
linkedinLink: { __typename: 'Link', label: '', url: '' },
|
||||
},
|
||||
},
|
||||
{
|
||||
__typename: 'Person',
|
||||
city: 'New York',
|
||||
jobTitle: '',
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-338b-46df-8811-fa08c7d19d35',
|
||||
email: 'elizabeth.baker@airbnb.com',
|
||||
phone: '+33784567890',
|
||||
position: 8,
|
||||
name: { __typename: 'FullName', firstName: 'Elizabeth', lastName: 'Baker' },
|
||||
linkedinLink: { __typename: 'Link', label: '', url: '' },
|
||||
xLink: { __typename: 'Link', label: '', url: '' },
|
||||
company: {
|
||||
__typename: 'Company',
|
||||
domainName: 'airbnb.com',
|
||||
name: 'Airbnb',
|
||||
employees: 123333,
|
||||
accountOwnerId: null,
|
||||
address: '',
|
||||
idealCustomerProfile: false,
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-171e-4bcc-9cf7-43448d6fb278',
|
||||
position: 5,
|
||||
updatedAt: '2024-05-28T15:52:27.902Z',
|
||||
xLink: { __typename: 'Link', label: '', url: '' },
|
||||
annualRecurringRevenue: {
|
||||
__typename: 'Currency',
|
||||
amountMicros: null,
|
||||
currencyCode: '',
|
||||
},
|
||||
linkedinLink: { __typename: 'Link', label: '', url: '' },
|
||||
},
|
||||
},
|
||||
{
|
||||
__typename: 'Person',
|
||||
city: 'San Francisco',
|
||||
jobTitle: '',
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-64ad-4b0e-bbfd-e9fd795b7016',
|
||||
email: 'christopher.nelson@airbnb.com',
|
||||
phone: '+33785678901',
|
||||
position: 9,
|
||||
name: {
|
||||
__typename: 'FullName',
|
||||
firstName: 'Christopher',
|
||||
lastName: 'Nelson',
|
||||
},
|
||||
linkedinLink: { __typename: 'Link', label: '', url: '' },
|
||||
xLink: { __typename: 'Link', label: '', url: '' },
|
||||
company: {
|
||||
__typename: 'Company',
|
||||
domainName: 'airbnb.com',
|
||||
name: 'Airbnb',
|
||||
employees: 123333,
|
||||
accountOwnerId: null,
|
||||
address: '',
|
||||
idealCustomerProfile: false,
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-171e-4bcc-9cf7-43448d6fb278',
|
||||
position: 5,
|
||||
updatedAt: '2024-05-28T15:52:27.902Z',
|
||||
xLink: { __typename: 'Link', label: '', url: '' },
|
||||
annualRecurringRevenue: {
|
||||
__typename: 'Currency',
|
||||
amountMicros: null,
|
||||
currencyCode: '',
|
||||
},
|
||||
linkedinLink: { __typename: 'Link', label: '', url: '' },
|
||||
},
|
||||
},
|
||||
{
|
||||
__typename: 'Person',
|
||||
city: 'New York',
|
||||
jobTitle: '',
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-5d54-41b7-ba36-f0d20e1417ae',
|
||||
email: 'avery.carter@airbnb.com',
|
||||
phone: '+33786789012',
|
||||
position: 10,
|
||||
name: { __typename: 'FullName', firstName: 'Avery', lastName: 'Carter' },
|
||||
linkedinLink: { __typename: 'Link', label: '', url: '' },
|
||||
xLink: { __typename: 'Link', label: '', url: '' },
|
||||
company: {
|
||||
__typename: 'Company',
|
||||
domainName: 'airbnb.com',
|
||||
name: 'Airbnb',
|
||||
employees: 123333,
|
||||
accountOwnerId: null,
|
||||
address: '',
|
||||
idealCustomerProfile: false,
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-171e-4bcc-9cf7-43448d6fb278',
|
||||
position: 5,
|
||||
updatedAt: '2024-05-28T15:52:27.902Z',
|
||||
xLink: { __typename: 'Link', label: '', url: '' },
|
||||
annualRecurringRevenue: {
|
||||
__typename: 'Currency',
|
||||
amountMicros: null,
|
||||
currencyCode: '',
|
||||
},
|
||||
linkedinLink: { __typename: 'Link', label: '', url: '' },
|
||||
},
|
||||
},
|
||||
{
|
||||
__typename: 'Person',
|
||||
city: 'Los Angeles',
|
||||
jobTitle: '',
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-623d-41fe-92e7-dd45b7c568e1',
|
||||
email: 'ethan.mitchell@google.com',
|
||||
phone: '+33787890123',
|
||||
position: 11,
|
||||
name: { __typename: 'FullName', firstName: 'Ethan', lastName: 'Mitchell' },
|
||||
linkedinLink: { __typename: 'Link', label: '', url: '' },
|
||||
xLink: { __typename: 'Link', label: '', url: '' },
|
||||
company: {
|
||||
__typename: 'Company',
|
||||
domainName: 'google.com',
|
||||
name: 'Google',
|
||||
employees: 10202,
|
||||
accountOwnerId: '20202020-0687-4c41-b707-ed1bfca972a7',
|
||||
address: 'Paris France',
|
||||
idealCustomerProfile: false,
|
||||
createdAt: '2024-05-21T13:16:29.000Z',
|
||||
id: '20202020-c21e-4ec2-873b-de4264d89025',
|
||||
position: 7.5,
|
||||
updatedAt: '2024-05-28T15:53:28.838Z',
|
||||
xLink: { __typename: 'Link', label: '', url: '' },
|
||||
annualRecurringRevenue: {
|
||||
__typename: 'Currency',
|
||||
amountMicros: 1001000000,
|
||||
currencyCode: 'USD',
|
||||
},
|
||||
linkedinLink: { __typename: 'Link', label: '', url: '' },
|
||||
},
|
||||
},
|
||||
{
|
||||
__typename: 'Person',
|
||||
city: 'Seattle',
|
||||
jobTitle: '',
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-2d40-4e49-8df4-9c6a049190ef',
|
||||
email: 'madison.perez@google.com',
|
||||
phone: '+33788901234',
|
||||
position: 12,
|
||||
name: { __typename: 'FullName', firstName: 'Madison', lastName: 'Perez' },
|
||||
linkedinLink: { __typename: 'Link', label: '', url: '' },
|
||||
xLink: { __typename: 'Link', label: '', url: '' },
|
||||
company: {
|
||||
__typename: 'Company',
|
||||
domainName: 'google.com',
|
||||
name: 'Google',
|
||||
employees: 10202,
|
||||
accountOwnerId: '20202020-0687-4c41-b707-ed1bfca972a7',
|
||||
address: 'Paris France',
|
||||
idealCustomerProfile: false,
|
||||
createdAt: '2024-05-21T13:16:29.000Z',
|
||||
id: '20202020-c21e-4ec2-873b-de4264d89025',
|
||||
position: 7.5,
|
||||
updatedAt: '2024-05-28T15:53:28.838Z',
|
||||
xLink: { __typename: 'Link', label: '', url: '' },
|
||||
annualRecurringRevenue: {
|
||||
__typename: 'Currency',
|
||||
amountMicros: 1001000000,
|
||||
currencyCode: 'USD',
|
||||
},
|
||||
linkedinLink: { __typename: 'Link', label: '', url: '' },
|
||||
},
|
||||
},
|
||||
{
|
||||
__typename: 'Person',
|
||||
city: 'Seattle',
|
||||
jobTitle: '',
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-2d40-4e49-8df4-9c6a049190df',
|
||||
email: 'bertrand.voulzy@google.com',
|
||||
phone: '+33788901234',
|
||||
position: 13,
|
||||
name: { __typename: 'FullName', firstName: 'Bertrand', lastName: 'Voulzy' },
|
||||
linkedinLink: { __typename: 'Link', label: '', url: '' },
|
||||
xLink: { __typename: 'Link', label: '', url: '' },
|
||||
company: {
|
||||
__typename: 'Company',
|
||||
domainName: 'google.com',
|
||||
name: 'Google',
|
||||
employees: 10202,
|
||||
accountOwnerId: '20202020-0687-4c41-b707-ed1bfca972a7',
|
||||
address: 'Paris France',
|
||||
idealCustomerProfile: false,
|
||||
createdAt: '2024-05-21T13:16:29.000Z',
|
||||
id: '20202020-c21e-4ec2-873b-de4264d89025',
|
||||
position: 7.5,
|
||||
updatedAt: '2024-05-28T15:53:28.838Z',
|
||||
xLink: { __typename: 'Link', label: '', url: '' },
|
||||
annualRecurringRevenue: {
|
||||
__typename: 'Currency',
|
||||
amountMicros: 1001000000,
|
||||
currencyCode: 'USD',
|
||||
},
|
||||
linkedinLink: { __typename: 'Link', label: '', url: '' },
|
||||
},
|
||||
},
|
||||
{
|
||||
__typename: 'Person',
|
||||
city: 'Seattle',
|
||||
jobTitle: '',
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-2d40-4e49-8df4-9c6a049191de',
|
||||
email: 'louis.duss@google.com',
|
||||
phone: '+33788901234',
|
||||
position: 14,
|
||||
name: { __typename: 'FullName', firstName: 'Louis', lastName: 'Duss' },
|
||||
linkedinLink: { __typename: 'Link', label: '', url: '' },
|
||||
xLink: { __typename: 'Link', label: '', url: '' },
|
||||
company: {
|
||||
__typename: 'Company',
|
||||
domainName: 'google.com',
|
||||
name: 'Google',
|
||||
employees: 10202,
|
||||
accountOwnerId: '20202020-0687-4c41-b707-ed1bfca972a7',
|
||||
address: 'Paris France',
|
||||
idealCustomerProfile: false,
|
||||
createdAt: '2024-05-21T13:16:29.000Z',
|
||||
id: '20202020-c21e-4ec2-873b-de4264d89025',
|
||||
position: 7.5,
|
||||
updatedAt: '2024-05-28T15:53:28.838Z',
|
||||
xLink: { __typename: 'Link', label: '', url: '' },
|
||||
annualRecurringRevenue: {
|
||||
__typename: 'Currency',
|
||||
amountMicros: 1001000000,
|
||||
currencyCode: 'USD',
|
||||
},
|
||||
linkedinLink: { __typename: 'Link', label: '', url: '' },
|
||||
},
|
||||
},
|
||||
{
|
||||
__typename: 'Person',
|
||||
city: 'Seattle',
|
||||
jobTitle: '',
|
||||
createdAt: '2024-05-01T13:16:29.046Z',
|
||||
id: '20202020-2d40-4e49-8df4-9c6a049191df',
|
||||
email: 'lorie.vladim@google.com',
|
||||
phone: '+33788901235',
|
||||
position: 15,
|
||||
name: { __typename: 'FullName', firstName: 'Lorie', lastName: 'Vladim' },
|
||||
linkedinLink: { __typename: 'Link', label: '', url: '' },
|
||||
xLink: { __typename: 'Link', label: '', url: '' },
|
||||
company: {
|
||||
__typename: 'Company',
|
||||
domainName: 'google.com',
|
||||
name: 'Google',
|
||||
employees: 10202,
|
||||
accountOwnerId: '20202020-0687-4c41-b707-ed1bfca972a7',
|
||||
address: 'Paris France',
|
||||
idealCustomerProfile: false,
|
||||
createdAt: '2024-05-21T13:16:29.000Z',
|
||||
id: '20202020-c21e-4ec2-873b-de4264d89025',
|
||||
position: 7.5,
|
||||
updatedAt: '2024-05-28T15:53:28.838Z',
|
||||
xLink: { __typename: 'Link', label: '', url: '' },
|
||||
annualRecurringRevenue: {
|
||||
__typename: 'Currency',
|
||||
amountMicros: 1001000000,
|
||||
currencyCode: 'USD',
|
||||
},
|
||||
linkedinLink: { __typename: 'Link', label: '', url: '' },
|
||||
},
|
||||
},
|
||||
];
|
||||
Reference in New Issue
Block a user