mirror of
				https://github.com/lingble/twenty.git
				synced 2025-10-30 12:22:29 +00:00 
			
		
		
		
	Enforce front project structure through ESLINT (#7863)
Fixes: https://github.com/twentyhq/twenty/issues/7329
This commit is contained in:
		
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -9,6 +9,7 @@ | |||||||
|  |  | ||||||
| .nx/installation | .nx/installation | ||||||
| .nx/cache | .nx/cache | ||||||
|  | projectStructure.cache.json | ||||||
|  |  | ||||||
| .pnp.* | .pnp.* | ||||||
| .yarn/* | .yarn/* | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								nx.json
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								nx.json
									
									
									
									
									
								
							| @@ -113,7 +113,7 @@ | |||||||
|       "outputs": ["{projectRoot}/{options.output-dir}"], |       "outputs": ["{projectRoot}/{options.output-dir}"], | ||||||
|       "options": { |       "options": { | ||||||
|         "cwd": "{projectRoot}", |         "cwd": "{projectRoot}", | ||||||
|         "command": "storybook build", |         "command": "VITE_DISABLE_ESLINT_CHECKER=true storybook build", | ||||||
|         "output-dir": "storybook-static", |         "output-dir": "storybook-static", | ||||||
|         "config-dir": ".storybook" |         "config-dir": ".storybook" | ||||||
|       } |       } | ||||||
|   | |||||||
| @@ -294,6 +294,7 @@ | |||||||
|     "eslint-plugin-jsx-a11y": "^6.8.0", |     "eslint-plugin-jsx-a11y": "^6.8.0", | ||||||
|     "eslint-plugin-prefer-arrow": "^1.2.3", |     "eslint-plugin-prefer-arrow": "^1.2.3", | ||||||
|     "eslint-plugin-prettier": "^5.1.2", |     "eslint-plugin-prettier": "^5.1.2", | ||||||
|  |     "eslint-plugin-project-structure": "^3.7.2", | ||||||
|     "eslint-plugin-react": "^7.33.2", |     "eslint-plugin-react": "^7.33.2", | ||||||
|     "eslint-plugin-react-hooks": "^4.6.0", |     "eslint-plugin-react-hooks": "^4.6.0", | ||||||
|     "eslint-plugin-react-refresh": "^0.4.4", |     "eslint-plugin-react-refresh": "^0.4.4", | ||||||
|   | |||||||
| @@ -21,7 +21,14 @@ module.exports = { | |||||||
|       parserOptions: { |       parserOptions: { | ||||||
|         project: ['packages/twenty-front/tsconfig.{json,*.json}'], |         project: ['packages/twenty-front/tsconfig.{json,*.json}'], | ||||||
|       }, |       }, | ||||||
|       rules: {}, |       plugins: ['project-structure'], | ||||||
|  |       settings: { | ||||||
|  |         'project-structure/folder-structure-config-path': | ||||||
|  |           'packages/twenty-front/folderStructure.json', | ||||||
|  |       }, | ||||||
|  |       rules: { | ||||||
|  |         'project-structure/folder-structure': 'error', | ||||||
|  |       }, | ||||||
|     }, |     }, | ||||||
|   ], |   ], | ||||||
| }; | }; | ||||||
|   | |||||||
							
								
								
									
										81
									
								
								packages/twenty-front/folderStructure.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								packages/twenty-front/folderStructure.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,81 @@ | |||||||
|  | { | ||||||
|  |   "$schema": "../../node_modules/eslint-plugin-project-structure/folderStructure.schema.json", | ||||||
|  |   "regexParameters": { | ||||||
|  |     "camelCase": "^[a-z]+([A-Za-z0-9]+)+" | ||||||
|  |   }, | ||||||
|  |   "structure": [ | ||||||
|  |     { | ||||||
|  |       "name": "packages", | ||||||
|  |       "children": [ | ||||||
|  |         { | ||||||
|  |           "name": "twenty-front", | ||||||
|  |           "children": [ | ||||||
|  |             { "name": "*", "children": [] }, | ||||||
|  |             { "name": "*" }, | ||||||
|  |             { | ||||||
|  |               "name": "src", | ||||||
|  |               "children": [ | ||||||
|  |                 { "name": "*", "children": [] }, | ||||||
|  |                 { "name": "*" }, | ||||||
|  |                 { | ||||||
|  |                   "name": "modules", | ||||||
|  |                   "children": [ | ||||||
|  |                     { "ruleId": "moduleFolderRule" }, | ||||||
|  |                     { "name": "types", "ruleId": "doNotCheckLeafFolderRule" } | ||||||
|  |                   ] | ||||||
|  |                 } | ||||||
|  |               ] | ||||||
|  |             } | ||||||
|  |           ] | ||||||
|  |         } | ||||||
|  |       ] | ||||||
|  |     } | ||||||
|  |   ], | ||||||
|  |   "rules": { | ||||||
|  |     "moduleFolderRule": { | ||||||
|  |       "name": "^(?!utils$|hooks$|states$|types$|graphql$|components$|effect-components$|constants$|validation-schemas$|contexts$|scopes$|services$|errors$)[a-z][a-z0-9]**(?:-[a-z0-9]+)**$", | ||||||
|  |       "folderRecursionLimit": 6, | ||||||
|  |       "children": [ | ||||||
|  |         { "ruleId": "moduleFolderRule" }, | ||||||
|  |         { "name": "hooks", "ruleId": "hooksLeafFolderRule" }, | ||||||
|  |         { "name": "utils", "ruleId": "utilsLeafFolderRule" }, | ||||||
|  |         { "name": "states", "ruleId": "doNotCheckLeafFolderRule" }, | ||||||
|  |         { "name": "types", "ruleId": "doNotCheckLeafFolderRule" }, | ||||||
|  |         { "name": "graphql", "ruleId": "doNotCheckLeafFolderRule" }, | ||||||
|  |         { "name": "components", "ruleId": "doNotCheckLeafFolderRule" }, | ||||||
|  |         { "name": "effect-components", "ruleId": "doNotCheckLeafFolderRule" }, | ||||||
|  |         { "name": "constants", "ruleId": "doNotCheckLeafFolderRule" }, | ||||||
|  |         { "name": "validation-schemas", "ruleId": "doNotCheckLeafFolderRule" }, | ||||||
|  |         { "name": "contexts", "ruleId": "doNotCheckLeafFolderRule" }, | ||||||
|  |         { "name": "scopes", "ruleId": "doNotCheckLeafFolderRule" }, | ||||||
|  |         { "name": "services", "ruleId": "doNotCheckLeafFolderRule" }, | ||||||
|  |         { "name": "errors", "ruleId": "doNotCheckLeafFolderRule" } | ||||||
|  |       ] | ||||||
|  |     }, | ||||||
|  |     "hooksLeafFolderRule": { | ||||||
|  |       "folderRecursionLimit": 2, | ||||||
|  |       "children": [ | ||||||
|  |         { "name": "use{PascalCase}.(ts|tsx)" }, | ||||||
|  |         { | ||||||
|  |           "name": "__tests__", | ||||||
|  |           "children": [{ "name": "use{PascalCase}.test.(ts|tsx)" }] | ||||||
|  |         }, | ||||||
|  |         { "name": "internal", "ruleId": "hooksLeafFolderRule" } | ||||||
|  |       ] | ||||||
|  |     }, | ||||||
|  |     "doNotCheckLeafFolderRule": { | ||||||
|  |       "folderRecursionLimit": 1, | ||||||
|  |       "children": [{ "name": "*" }, { "name": "*", "children": [] }] | ||||||
|  |     }, | ||||||
|  |     "utilsLeafFolderRule": { | ||||||
|  |       "folderRecursionLimit": 1, | ||||||
|  |       "children": [ | ||||||
|  |         { "name": "{camelCase}.ts" }, | ||||||
|  |         { | ||||||
|  |           "name": "__tests__", | ||||||
|  |           "children": [{ "name": "{camelCase}.test.ts" }] | ||||||
|  |         } | ||||||
|  |       ] | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
| @@ -25,9 +25,9 @@ const jestConfig: JestConfigWithTsJest = { | |||||||
|   extensionsToTreatAsEsm: ['.ts', '.tsx'], |   extensionsToTreatAsEsm: ['.ts', '.tsx'], | ||||||
|   coverageThreshold: { |   coverageThreshold: { | ||||||
|     global: { |     global: { | ||||||
|       statements: 60, |       statements: 59, | ||||||
|       lines: 55, |       lines: 55, | ||||||
|       functions: 50, |       functions: 49, | ||||||
|     }, |     }, | ||||||
|   }, |   }, | ||||||
|   collectCoverageFrom: ['<rootDir>/src/**/*.ts'], |   collectCoverageFrom: ['<rootDir>/src/**/*.ts'], | ||||||
|   | |||||||
| @@ -52,7 +52,9 @@ | |||||||
|         "reportUnusedDisableDirectives": "error" |         "reportUnusedDisableDirectives": "error" | ||||||
|       }, |       }, | ||||||
|       "configurations": { |       "configurations": { | ||||||
|         "ci": { "eslintConfig": "{projectRoot}/.eslintrc-ci.cjs" }, |         "ci": { | ||||||
|  |           "eslintConfig": "{projectRoot}/.eslintrc-ci.cjs" | ||||||
|  |         }, | ||||||
|         "fix": {} |         "fix": {} | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|   | |||||||
| @@ -8,9 +8,9 @@ import { AppThemeProvider } from '@/ui/theme/components/AppThemeProvider'; | |||||||
| import { isDefined } from '~/utils/isDefined'; | import { isDefined } from '~/utils/isDefined'; | ||||||
| import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull'; | import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull'; | ||||||
| 
 | 
 | ||||||
| import { AttachmentIcon } from '../files/components/AttachmentIcon'; | import { AttachmentIcon } from '../../files/components/AttachmentIcon'; | ||||||
| import { AttachmentType } from '../files/types/Attachment'; | import { AttachmentType } from '../../files/types/Attachment'; | ||||||
| import { getFileType } from '../files/utils/getFileType'; | import { getFileType } from '../../files/utils/getFileType'; | ||||||
| 
 | 
 | ||||||
| const StyledFileInput = styled.input` | const StyledFileInput = styled.input` | ||||||
|   display: none; |   display: none; | ||||||
| @@ -1,8 +1,8 @@ | |||||||
| import { BlockNoteSchema, defaultBlockSpecs } from '@blocknote/core'; | import { BlockNoteSchema, defaultBlockSpecs } from '@blocknote/core'; | ||||||
| 
 | 
 | ||||||
| import { FileBlock } from './FileBlock'; | import { FileBlock } from '../components/FileBlock'; | ||||||
| 
 | 
 | ||||||
| export const blockSchema = BlockNoteSchema.create({ | export const BLOCK_SCHEMA = BlockNoteSchema.create({ | ||||||
|   blockSpecs: { |   blockSpecs: { | ||||||
|     ...defaultBlockSpecs, |     ...defaultBlockSpecs, | ||||||
|     file: FileBlock, |     file: FileBlock, | ||||||
| @@ -18,7 +18,7 @@ import { | |||||||
| 
 | 
 | ||||||
| import { SuggestionItem } from '@/ui/input/editor/components/CustomSlashMenu'; | import { SuggestionItem } from '@/ui/input/editor/components/CustomSlashMenu'; | ||||||
| 
 | 
 | ||||||
| import { blockSchema } from './schema'; | import { BLOCK_SCHEMA } from '../constants/Schema'; | ||||||
| 
 | 
 | ||||||
| const Icons: Record<string, IconComponent> = { | const Icons: Record<string, IconComponent> = { | ||||||
|   'Heading 1': IconH1, |   'Heading 1': IconH1, | ||||||
| @@ -35,7 +35,7 @@ const Icons: Record<string, IconComponent> = { | |||||||
|   Emoji: IconMoodSmile, |   Emoji: IconMoodSmile, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export const getSlashMenu = (editor: typeof blockSchema.BlockNoteEditor) => { | export const getSlashMenu = (editor: typeof BLOCK_SCHEMA.BlockNoteEditor) => { | ||||||
|   const items: SuggestionItem[] = [ |   const items: SuggestionItem[] = [ | ||||||
|     ...getDefaultReactSlashMenuItems(editor).map((x) => ({ |     ...getDefaultReactSlashMenuItems(editor).map((x) => ({ | ||||||
|       ...x, |       ...x, | ||||||
| @@ -5,9 +5,9 @@ import { H3Title } from 'twenty-ui'; | |||||||
| import { CalendarMonthCard } from '@/activities/calendar/components/CalendarMonthCard'; | import { CalendarMonthCard } from '@/activities/calendar/components/CalendarMonthCard'; | ||||||
| import { TIMELINE_CALENDAR_EVENTS_DEFAULT_PAGE_SIZE } from '@/activities/calendar/constants/Calendar'; | import { TIMELINE_CALENDAR_EVENTS_DEFAULT_PAGE_SIZE } from '@/activities/calendar/constants/Calendar'; | ||||||
| import { CalendarContext } from '@/activities/calendar/contexts/CalendarContext'; | import { CalendarContext } from '@/activities/calendar/contexts/CalendarContext'; | ||||||
|  | import { getTimelineCalendarEventsFromCompanyId } from '@/activities/calendar/graphql/queries/getTimelineCalendarEventsFromCompanyId'; | ||||||
|  | import { getTimelineCalendarEventsFromPersonId } from '@/activities/calendar/graphql/queries/getTimelineCalendarEventsFromPersonId'; | ||||||
| import { useCalendarEvents } from '@/activities/calendar/hooks/useCalendarEvents'; | import { useCalendarEvents } from '@/activities/calendar/hooks/useCalendarEvents'; | ||||||
| import { getTimelineCalendarEventsFromCompanyId } from '@/activities/calendar/queries/getTimelineCalendarEventsFromCompanyId'; |  | ||||||
| import { getTimelineCalendarEventsFromPersonId } from '@/activities/calendar/queries/getTimelineCalendarEventsFromPersonId'; |  | ||||||
| import { CustomResolverFetchMoreLoader } from '@/activities/components/CustomResolverFetchMoreLoader'; | import { CustomResolverFetchMoreLoader } from '@/activities/components/CustomResolverFetchMoreLoader'; | ||||||
| import { SkeletonLoader } from '@/activities/components/SkeletonLoader'; | import { SkeletonLoader } from '@/activities/components/SkeletonLoader'; | ||||||
| import { useCustomResolver } from '@/activities/hooks/useCustomResolver'; | import { useCustomResolver } from '@/activities/hooks/useCustomResolver'; | ||||||
|   | |||||||
| @@ -1,10 +1,10 @@ | |||||||
| import { getOperationName } from '@apollo/client/utilities'; | import { getOperationName } from '@apollo/client/utilities'; | ||||||
| import { Meta, StoryObj } from '@storybook/react'; | import { Meta, StoryObj } from '@storybook/react'; | ||||||
| import { graphql, HttpResponse } from 'msw'; | import { HttpResponse, graphql } from 'msw'; | ||||||
| import { ComponentDecorator } from 'twenty-ui'; | import { ComponentDecorator } from 'twenty-ui'; | ||||||
|  |  | ||||||
| import { Calendar } from '@/activities/calendar/components/Calendar'; | import { Calendar } from '@/activities/calendar/components/Calendar'; | ||||||
| import { getTimelineCalendarEventsFromCompanyId } from '@/activities/calendar/queries/getTimelineCalendarEventsFromCompanyId'; | import { getTimelineCalendarEventsFromCompanyId } from '@/activities/calendar/graphql/queries/getTimelineCalendarEventsFromCompanyId'; | ||||||
| import { ObjectMetadataItemsDecorator } from '~/testing/decorators/ObjectMetadataItemsDecorator'; | import { ObjectMetadataItemsDecorator } from '~/testing/decorators/ObjectMetadataItemsDecorator'; | ||||||
| import { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator'; | import { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator'; | ||||||
| import { graphqlMocks } from '~/testing/graphqlMocks'; | import { graphqlMocks } from '~/testing/graphqlMocks'; | ||||||
|   | |||||||
| @@ -1,7 +1,6 @@ | |||||||
|  | import { timelineCalendarEventParticipantFragment } from '@/activities/calendar/graphql/queries/fragments/timelineCalendarEventParticipantFragment'; | ||||||
| import { gql } from '@apollo/client'; | import { gql } from '@apollo/client'; | ||||||
| 
 | 
 | ||||||
| import { timelineCalendarEventParticipantFragment } from '@/activities/calendar/queries/fragments/timelineCalendarEventParticipantFragment'; |  | ||||||
| 
 |  | ||||||
| export const timelineCalendarEventFragment = gql` | export const timelineCalendarEventFragment = gql` | ||||||
|   fragment TimelineCalendarEventFragment on TimelineCalendarEvent { |   fragment TimelineCalendarEventFragment on TimelineCalendarEvent { | ||||||
|     id |     id | ||||||
| @@ -1,7 +1,6 @@ | |||||||
|  | import { timelineCalendarEventFragment } from '@/activities/calendar/graphql/queries/fragments/timelineCalendarEventFragment'; | ||||||
| import { gql } from '@apollo/client'; | import { gql } from '@apollo/client'; | ||||||
| 
 | 
 | ||||||
| import { timelineCalendarEventFragment } from '@/activities/calendar/queries/fragments/timelineCalendarEventFragment'; |  | ||||||
| 
 |  | ||||||
| export const timelineCalendarEventWithTotalFragment = gql` | export const timelineCalendarEventWithTotalFragment = gql` | ||||||
|   fragment TimelineCalendarEventsWithTotalFragment on TimelineCalendarEventsWithTotal { |   fragment TimelineCalendarEventsWithTotalFragment on TimelineCalendarEventsWithTotal { | ||||||
|     totalNumberOfCalendarEvents |     totalNumberOfCalendarEvents | ||||||
| @@ -1,7 +1,6 @@ | |||||||
|  | import { timelineCalendarEventWithTotalFragment } from '@/activities/calendar/graphql/queries/fragments/timelineCalendarEventWithTotalFragment'; | ||||||
| import { gql } from '@apollo/client'; | import { gql } from '@apollo/client'; | ||||||
| 
 | 
 | ||||||
| import { timelineCalendarEventWithTotalFragment } from '@/activities/calendar/queries/fragments/timelineCalendarEventWithTotalFragment'; |  | ||||||
| 
 |  | ||||||
| export const getTimelineCalendarEventsFromCompanyId = gql` | export const getTimelineCalendarEventsFromCompanyId = gql` | ||||||
|   query GetTimelineCalendarEventsFromCompanyId( |   query GetTimelineCalendarEventsFromCompanyId( | ||||||
|     $companyId: UUID! |     $companyId: UUID! | ||||||
| @@ -1,7 +1,6 @@ | |||||||
|  | import { timelineCalendarEventWithTotalFragment } from '@/activities/calendar/graphql/queries/fragments/timelineCalendarEventWithTotalFragment'; | ||||||
| import { gql } from '@apollo/client'; | import { gql } from '@apollo/client'; | ||||||
| 
 | 
 | ||||||
| import { timelineCalendarEventWithTotalFragment } from '@/activities/calendar/queries/fragments/timelineCalendarEventWithTotalFragment'; |  | ||||||
| 
 |  | ||||||
| export const getTimelineCalendarEventsFromPersonId = gql` | export const getTimelineCalendarEventsFromPersonId = gql` | ||||||
|   query GetTimelineCalendarEventsFromPersonId( |   query GetTimelineCalendarEventsFromPersonId( | ||||||
|     $personId: UUID! |     $personId: UUID! | ||||||
| @@ -7,7 +7,6 @@ import { Key } from 'ts-key-enum'; | |||||||
| import { useDebouncedCallback } from 'use-debounce'; | import { useDebouncedCallback } from 'use-debounce'; | ||||||
| import { v4 } from 'uuid'; | import { v4 } from 'uuid'; | ||||||
|  |  | ||||||
| import { blockSchema } from '@/activities/blocks/schema'; |  | ||||||
| import { useUpsertActivity } from '@/activities/hooks/useUpsertActivity'; | import { useUpsertActivity } from '@/activities/hooks/useUpsertActivity'; | ||||||
| import { activityBodyFamilyState } from '@/activities/states/activityBodyFamilyState'; | import { activityBodyFamilyState } from '@/activities/states/activityBodyFamilyState'; | ||||||
| import { activityTitleHasBeenSetFamilyState } from '@/activities/states/activityTitleHasBeenSetFamilyState'; | import { activityTitleHasBeenSetFamilyState } from '@/activities/states/activityTitleHasBeenSetFamilyState'; | ||||||
| @@ -27,6 +26,7 @@ import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull'; | |||||||
|  |  | ||||||
| import { getFileType } from '../files/utils/getFileType'; | import { getFileType } from '../files/utils/getFileType'; | ||||||
|  |  | ||||||
|  | import { BLOCK_SCHEMA } from '@/activities/blocks/constants/Schema'; | ||||||
| import { Note } from '@/activities/types/Note'; | import { Note } from '@/activities/types/Note'; | ||||||
| import { Task } from '@/activities/types/Task'; | import { Task } from '@/activities/types/Task'; | ||||||
| import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; | import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; | ||||||
| @@ -287,7 +287,7 @@ export const RichTextEditor = ({ | |||||||
|   const editor = useCreateBlockNote({ |   const editor = useCreateBlockNote({ | ||||||
|     initialContent: initialBody, |     initialContent: initialBody, | ||||||
|     domAttributes: { editor: { class: 'editor' } }, |     domAttributes: { editor: { class: 'editor' } }, | ||||||
|     schema: blockSchema, |     schema: BLOCK_SCHEMA, | ||||||
|     uploadFile: handleUploadAttachment, |     uploadFile: handleUploadAttachment, | ||||||
|   }); |   }); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -6,8 +6,8 @@ import { CustomResolverFetchMoreLoader } from '@/activities/components/CustomRes | |||||||
| import { SkeletonLoader } from '@/activities/components/SkeletonLoader'; | import { SkeletonLoader } from '@/activities/components/SkeletonLoader'; | ||||||
| import { EmailThreadPreview } from '@/activities/emails/components/EmailThreadPreview'; | import { EmailThreadPreview } from '@/activities/emails/components/EmailThreadPreview'; | ||||||
| import { TIMELINE_THREADS_DEFAULT_PAGE_SIZE } from '@/activities/emails/constants/Messaging'; | import { TIMELINE_THREADS_DEFAULT_PAGE_SIZE } from '@/activities/emails/constants/Messaging'; | ||||||
| import { getTimelineThreadsFromCompanyId } from '@/activities/emails/queries/getTimelineThreadsFromCompanyId'; | import { getTimelineThreadsFromCompanyId } from '@/activities/emails/graphql/queries/getTimelineThreadsFromCompanyId'; | ||||||
| import { getTimelineThreadsFromPersonId } from '@/activities/emails/queries/getTimelineThreadsFromPersonId'; | import { getTimelineThreadsFromPersonId } from '@/activities/emails/graphql/queries/getTimelineThreadsFromPersonId'; | ||||||
| import { useCustomResolver } from '@/activities/hooks/useCustomResolver'; | import { useCustomResolver } from '@/activities/hooks/useCustomResolver'; | ||||||
| import { ActivityTargetableObject } from '@/activities/types/ActivityTargetableEntity'; | import { ActivityTargetableObject } from '@/activities/types/ActivityTargetableEntity'; | ||||||
| import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; | import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| import { gql } from '@apollo/client'; | import { gql } from '@apollo/client'; | ||||||
| 
 | 
 | ||||||
| import { participantFragment } from '@/activities/emails/queries/fragments/participantFragment'; | import { participantFragment } from '@/activities/emails/graphql/queries/fragments/participantFragment'; | ||||||
| 
 | 
 | ||||||
| export const timelineThreadFragment = gql` | export const timelineThreadFragment = gql` | ||||||
|   fragment TimelineThreadFragment on TimelineThread { |   fragment TimelineThreadFragment on TimelineThread { | ||||||
| @@ -1,7 +1,6 @@ | |||||||
|  | import { timelineThreadFragment } from '@/activities/emails/graphql/queries/fragments/timelineThreadFragment'; | ||||||
| import { gql } from '@apollo/client'; | import { gql } from '@apollo/client'; | ||||||
| 
 | 
 | ||||||
| import { timelineThreadFragment } from '@/activities/emails/queries/fragments/timelineThreadFragment'; |  | ||||||
| 
 |  | ||||||
| export const timelineThreadWithTotalFragment = gql` | export const timelineThreadWithTotalFragment = gql` | ||||||
|   fragment TimelineThreadsWithTotalFragment on TimelineThreadsWithTotal { |   fragment TimelineThreadsWithTotalFragment on TimelineThreadsWithTotal { | ||||||
|     totalNumberOfThreads |     totalNumberOfThreads | ||||||
| @@ -1,7 +1,6 @@ | |||||||
|  | import { timelineThreadWithTotalFragment } from '@/activities/emails/graphql/queries/fragments/timelineThreadWithTotalFragment'; | ||||||
| import { gql } from '@apollo/client'; | import { gql } from '@apollo/client'; | ||||||
| 
 | 
 | ||||||
| import { timelineThreadWithTotalFragment } from '@/activities/emails/queries/fragments/timelineThreadWithTotalFragment'; |  | ||||||
| 
 |  | ||||||
| export const getTimelineThreadsFromCompanyId = gql` | export const getTimelineThreadsFromCompanyId = gql` | ||||||
|   query GetTimelineThreadsFromCompanyId( |   query GetTimelineThreadsFromCompanyId( | ||||||
|     $companyId: UUID! |     $companyId: UUID! | ||||||
| @@ -1,6 +1,6 @@ | |||||||
| import { gql } from '@apollo/client'; | import { gql } from '@apollo/client'; | ||||||
| 
 | 
 | ||||||
| import { timelineThreadWithTotalFragment } from '@/activities/emails/queries/fragments/timelineThreadWithTotalFragment'; | import { timelineThreadWithTotalFragment } from '@/activities/emails/graphql/queries/fragments/timelineThreadWithTotalFragment'; | ||||||
| 
 | 
 | ||||||
| export const getTimelineThreadsFromPersonId = gql` | export const getTimelineThreadsFromPersonId = gql` | ||||||
|   query GetTimelineThreadsFromPersonId( |   query GetTimelineThreadsFromPersonId( | ||||||
| @@ -1,7 +1,7 @@ | |||||||
| import { useRecoilValue } from 'recoil'; | import { useRecoilValue } from 'recoil'; | ||||||
|  |  | ||||||
| import { usePrepareFindManyActivitiesQuery } from '@/activities/hooks/usePrepareFindManyActivitiesQuery'; | import { usePrepareFindManyActivitiesQuery } from '@/activities/hooks/usePrepareFindManyActivitiesQuery'; | ||||||
| import { objectShowPageTargetableObjectState } from '@/activities/timelineActivities/states/objectShowPageTargetableObjectIdState'; | import { objectShowPageTargetableObjectState } from '@/activities/timeline-activities/states/objectShowPageTargetableObjectIdState'; | ||||||
| import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; | import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; | ||||||
| import { isDefined } from '~/utils/isDefined'; | import { isDefined } from '~/utils/isDefined'; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -4,7 +4,7 @@ import { useCreateActivityInDB } from '@/activities/hooks/useCreateActivityInDB' | |||||||
| import { useRefreshShowPageFindManyActivitiesQueries } from '@/activities/hooks/useRefreshShowPageFindManyActivitiesQueries'; | import { useRefreshShowPageFindManyActivitiesQueries } from '@/activities/hooks/useRefreshShowPageFindManyActivitiesQueries'; | ||||||
| import { isActivityInCreateModeState } from '@/activities/states/isActivityInCreateModeState'; | import { isActivityInCreateModeState } from '@/activities/states/isActivityInCreateModeState'; | ||||||
| import { isUpsertingActivityInDBState } from '@/activities/states/isCreatingActivityInDBState'; | import { isUpsertingActivityInDBState } from '@/activities/states/isCreatingActivityInDBState'; | ||||||
| import { objectShowPageTargetableObjectState } from '@/activities/timelineActivities/states/objectShowPageTargetableObjectIdState'; | import { objectShowPageTargetableObjectState } from '@/activities/timeline-activities/states/objectShowPageTargetableObjectIdState'; | ||||||
| import { Note } from '@/activities/types/Note'; | import { Note } from '@/activities/types/Note'; | ||||||
| import { Task } from '@/activities/types/Task'; | import { Task } from '@/activities/types/Task'; | ||||||
| import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; | import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; | ||||||
|   | |||||||
| @@ -3,7 +3,7 @@ import { useRecoilState } from 'recoil'; | |||||||
|  |  | ||||||
| import { useActivities } from '@/activities/hooks/useActivities'; | import { useActivities } from '@/activities/hooks/useActivities'; | ||||||
| import { currentNotesQueryVariablesState } from '@/activities/notes/states/currentNotesQueryVariablesState'; | import { currentNotesQueryVariablesState } from '@/activities/notes/states/currentNotesQueryVariablesState'; | ||||||
| import { FIND_MANY_TIMELINE_ACTIVITIES_ORDER_BY } from '@/activities/timelineActivities/constants/FindManyTimelineActivitiesOrderBy'; | import { FIND_MANY_TIMELINE_ACTIVITIES_ORDER_BY } from '@/activities/timeline-activities/constants/FindManyTimelineActivitiesOrderBy'; | ||||||
| import { Note } from '@/activities/types/Note'; | import { Note } from '@/activities/types/Note'; | ||||||
| import { RecordGqlOperationVariables } from '@/object-record/graphql/types/RecordGqlOperationVariables'; | import { RecordGqlOperationVariables } from '@/object-record/graphql/types/RecordGqlOperationVariables'; | ||||||
| import { isDeeplyEqual } from '~/utils/isDeeplyEqual'; | import { isDeeplyEqual } from '~/utils/isDeeplyEqual'; | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| import { useOpenCreateActivityDrawer } from '@/activities/hooks/useOpenCreateActivityDrawer'; | import { useOpenCreateActivityDrawer } from '@/activities/hooks/useOpenCreateActivityDrawer'; | ||||||
| import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; | import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; | ||||||
| import { PageAddButton } from '@/ui/layout/page/PageAddButton'; | import { PageAddButton } from '@/ui/layout/page/components/PageAddButton'; | ||||||
|  |  | ||||||
| export const PageAddTaskButton = () => { | export const PageAddTaskButton = () => { | ||||||
|   const openCreateActivity = useOpenCreateActivityDrawer({ |   const openCreateActivity = useOpenCreateActivityDrawer({ | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| import { useActivities } from '@/activities/hooks/useActivities'; | import { useActivities } from '@/activities/hooks/useActivities'; | ||||||
| import { FIND_MANY_TIMELINE_ACTIVITIES_ORDER_BY } from '@/activities/timelineActivities/constants/FindManyTimelineActivitiesOrderBy'; | import { FIND_MANY_TIMELINE_ACTIVITIES_ORDER_BY } from '@/activities/timeline-activities/constants/FindManyTimelineActivitiesOrderBy'; | ||||||
| import { ActivityTargetableObject } from '@/activities/types/ActivityTargetableEntity'; | import { ActivityTargetableObject } from '@/activities/types/ActivityTargetableEntity'; | ||||||
| import { Task } from '@/activities/types/Task'; | import { Task } from '@/activities/types/Task'; | ||||||
| import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; | import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; | ||||||
|   | |||||||
| @@ -1,10 +1,10 @@ | |||||||
| import styled from '@emotion/styled'; | import styled from '@emotion/styled'; | ||||||
| import { ReactElement } from 'react'; | import { ReactElement } from 'react'; | ||||||
| 
 | 
 | ||||||
| import { EventsGroup } from '@/activities/timelineActivities/components/EventsGroup'; | import { EventsGroup } from '@/activities/timeline-activities/components/EventsGroup'; | ||||||
| import { TimelineActivity } from '@/activities/timelineActivities/types/TimelineActivity'; | import { TimelineActivity } from '@/activities/timeline-activities/types/TimelineActivity'; | ||||||
| import { filterOutInvalidTimelineActivities } from '@/activities/timelineActivities/utils/filterOutInvalidTimelineActivities'; | import { filterOutInvalidTimelineActivities } from '@/activities/timeline-activities/utils/filterOutInvalidTimelineActivities'; | ||||||
| import { groupEventsByMonth } from '@/activities/timelineActivities/utils/groupEventsByMonth'; | import { groupEventsByMonth } from '@/activities/timeline-activities/utils/groupEventsByMonth'; | ||||||
| import { ActivityTargetableObject } from '@/activities/types/ActivityTargetableEntity'; | import { ActivityTargetableObject } from '@/activities/types/ActivityTargetableEntity'; | ||||||
| import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem'; | import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem'; | ||||||
| import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems'; | import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems'; | ||||||
| @@ -2,13 +2,13 @@ import styled from '@emotion/styled'; | |||||||
| import { useContext } from 'react'; | import { useContext } from 'react'; | ||||||
| import { useRecoilValue } from 'recoil'; | import { useRecoilValue } from 'recoil'; | ||||||
| 
 | 
 | ||||||
| import { TimelineActivityContext } from '@/activities/timelineActivities/contexts/TimelineActivityContext'; | import { TimelineActivityContext } from '@/activities/timeline-activities/contexts/TimelineActivityContext'; | ||||||
| 
 | 
 | ||||||
| import { useLinkedObjectObjectMetadataItem } from '@/activities/timelineActivities/hooks/useLinkedObjectObjectMetadataItem'; | import { useLinkedObjectObjectMetadataItem } from '@/activities/timeline-activities/hooks/useLinkedObjectObjectMetadataItem'; | ||||||
| import { EventIconDynamicComponent } from '@/activities/timelineActivities/rows/components/EventIconDynamicComponent'; | import { EventIconDynamicComponent } from '@/activities/timeline-activities/rows/components/EventIconDynamicComponent'; | ||||||
| import { EventRowDynamicComponent } from '@/activities/timelineActivities/rows/components/EventRowDynamicComponent'; | import { EventRowDynamicComponent } from '@/activities/timeline-activities/rows/components/EventRowDynamicComponent'; | ||||||
| import { TimelineActivity } from '@/activities/timelineActivities/types/TimelineActivity'; | import { TimelineActivity } from '@/activities/timeline-activities/types/TimelineActivity'; | ||||||
| import { getTimelineActivityAuthorFullName } from '@/activities/timelineActivities/utils/getTimelineActivityAuthorFullName'; | import { getTimelineActivityAuthorFullName } from '@/activities/timeline-activities/utils/getTimelineActivityAuthorFullName'; | ||||||
| import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState'; | import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState'; | ||||||
| import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; | import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; | ||||||
| import { beautifyPastDateRelativeToNow } from '~/utils/date-utils'; | import { beautifyPastDateRelativeToNow } from '~/utils/date-utils'; | ||||||
| @@ -1,7 +1,7 @@ | |||||||
| import styled from '@emotion/styled'; | import styled from '@emotion/styled'; | ||||||
| 
 | 
 | ||||||
| import { EventRow } from '@/activities/timelineActivities/components/EventRow'; | import { EventRow } from '@/activities/timeline-activities/components/EventRow'; | ||||||
| import { EventGroup } from '@/activities/timelineActivities/utils/groupEventsByMonth'; | import { EventGroup } from '@/activities/timeline-activities/utils/groupEventsByMonth'; | ||||||
| import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; | import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; | ||||||
| 
 | 
 | ||||||
| type EventsGroupProps = { | type EventsGroupProps = { | ||||||
| @@ -2,9 +2,9 @@ import styled from '@emotion/styled'; | |||||||
| 
 | 
 | ||||||
| import { CustomResolverFetchMoreLoader } from '@/activities/components/CustomResolverFetchMoreLoader'; | import { CustomResolverFetchMoreLoader } from '@/activities/components/CustomResolverFetchMoreLoader'; | ||||||
| import { SkeletonLoader } from '@/activities/components/SkeletonLoader'; | import { SkeletonLoader } from '@/activities/components/SkeletonLoader'; | ||||||
| import { EventList } from '@/activities/timelineActivities/components/EventList'; | import { EventList } from '@/activities/timeline-activities/components/EventList'; | ||||||
| import { TimelineCreateButtonGroup } from '@/activities/timelineActivities/components/TimelineCreateButtonGroup'; | import { TimelineCreateButtonGroup } from '@/activities/timeline-activities/components/TimelineCreateButtonGroup'; | ||||||
| import { useTimelineActivities } from '@/activities/timelineActivities/hooks/useTimelineActivities'; | import { useTimelineActivities } from '@/activities/timeline-activities/hooks/useTimelineActivities'; | ||||||
| import { ActivityTargetableObject } from '@/activities/types/ActivityTargetableEntity'; | import { ActivityTargetableObject } from '@/activities/types/ActivityTargetableEntity'; | ||||||
| import AnimatedPlaceholder from '@/ui/layout/animated-placeholder/components/AnimatedPlaceholder'; | import AnimatedPlaceholder from '@/ui/layout/animated-placeholder/components/AnimatedPlaceholder'; | ||||||
| import { | import { | ||||||
| @@ -46,7 +46,7 @@ export const TimelineActivities = ({ | |||||||
|   const isTimelineActivitiesEmpty = |   const isTimelineActivitiesEmpty = | ||||||
|     !timelineActivities || timelineActivities.length === 0; |     !timelineActivities || timelineActivities.length === 0; | ||||||
| 
 | 
 | ||||||
|   if (loading) { |   if (loading === true) { | ||||||
|     return <SkeletonLoader withSubSections />; |     return <SkeletonLoader withSubSections />; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
| @@ -1,9 +1,9 @@ | |||||||
| import { Meta, StoryObj } from '@storybook/react'; | import { Meta, StoryObj } from '@storybook/react'; | ||||||
| import { graphql, HttpResponse } from 'msw'; | import { HttpResponse, graphql } from 'msw'; | ||||||
| import { ComponentDecorator } from 'twenty-ui'; | import { ComponentDecorator } from 'twenty-ui'; | ||||||
| 
 | 
 | ||||||
| import { TimelineActivities } from '@/activities/timelineActivities/components/TimelineActivities'; | import { TimelineActivities } from '@/activities/timeline-activities/components/TimelineActivities'; | ||||||
| import { TimelineActivityContext } from '@/activities/timelineActivities/contexts/TimelineActivityContext'; | import { TimelineActivityContext } from '@/activities/timeline-activities/contexts/TimelineActivityContext'; | ||||||
| import { ObjectMetadataItemsDecorator } from '~/testing/decorators/ObjectMetadataItemsDecorator'; | import { ObjectMetadataItemsDecorator } from '~/testing/decorators/ObjectMetadataItemsDecorator'; | ||||||
| import { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator'; | import { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator'; | ||||||
| import { mockedTimelineActivities } from '~/testing/mock-data/timeline-activities'; | import { mockedTimelineActivities } from '~/testing/mock-data/timeline-activities'; | ||||||
| @@ -1,6 +1,6 @@ | |||||||
| import { renderHook } from '@testing-library/react'; | import { renderHook } from '@testing-library/react'; | ||||||
| 
 | 
 | ||||||
| import { useTimelineActivities } from '@/activities/timelineActivities/hooks/useTimelineActivities'; | import { useTimelineActivities } from '@/activities/timeline-activities/hooks/useTimelineActivities'; | ||||||
| import { getJestMetadataAndApolloMocksWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksWrapper'; | import { getJestMetadataAndApolloMocksWrapper } from '~/testing/jest/getJestMetadataAndApolloMocksWrapper'; | ||||||
| 
 | 
 | ||||||
| jest.mock('@/object-record/hooks/useFindManyRecords', () => ({ | jest.mock('@/object-record/hooks/useFindManyRecords', () => ({ | ||||||
| @@ -1,5 +1,5 @@ | |||||||
| import { useLinkedObjectsTitle } from '@/activities/timelineActivities/hooks/useLinkedObjectsTitle'; | import { useLinkedObjectsTitle } from '@/activities/timeline-activities/hooks/useLinkedObjectsTitle'; | ||||||
| import { TimelineActivity } from '@/activities/timelineActivities/types/TimelineActivity'; | import { TimelineActivity } from '@/activities/timeline-activities/types/TimelineActivity'; | ||||||
| import { ActivityTargetableObject } from '@/activities/types/ActivityTargetableEntity'; | import { ActivityTargetableObject } from '@/activities/types/ActivityTargetableEntity'; | ||||||
| import { getActivityTargetObjectFieldIdName } from '@/activities/utils/getActivityTargetObjectFieldIdName'; | import { getActivityTargetObjectFieldIdName } from '@/activities/utils/getActivityTargetObjectFieldIdName'; | ||||||
| import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem'; | import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem'; | ||||||
| @@ -5,7 +5,7 @@ import { | |||||||
|   EventRowDynamicComponentProps, |   EventRowDynamicComponentProps, | ||||||
|   StyledEventRowItemAction, |   StyledEventRowItemAction, | ||||||
|   StyledEventRowItemColumn, |   StyledEventRowItemColumn, | ||||||
| } from '@/activities/timelineActivities/rows/components/EventRowDynamicComponent'; | } from '@/activities/timeline-activities/rows/components/EventRowDynamicComponent'; | ||||||
| import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; | import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; | ||||||
| import { useGetRecordFromCache } from '@/object-record/cache/hooks/useGetRecordFromCache'; | import { useGetRecordFromCache } from '@/object-record/cache/hooks/useGetRecordFromCache'; | ||||||
| import { isNonEmptyString } from '@sniptt/guards'; | import { isNonEmptyString } from '@sniptt/guards'; | ||||||
| @@ -1,14 +1,14 @@ | |||||||
| import { useState } from 'react'; |  | ||||||
| import styled from '@emotion/styled'; | import styled from '@emotion/styled'; | ||||||
|  | import { useState } from 'react'; | ||||||
| 
 | 
 | ||||||
| import { EventCardCalendarEvent } from '@/activities/timelineActivities/rows/calendar/components/EventCardCalendarEvent'; | import { EventCardCalendarEvent } from '@/activities/timeline-activities/rows/calendar/components/EventCardCalendarEvent'; | ||||||
| import { EventCard } from '@/activities/timelineActivities/rows/components/EventCard'; | import { EventCard } from '@/activities/timeline-activities/rows/components/EventCard'; | ||||||
| import { EventCardToggleButton } from '@/activities/timelineActivities/rows/components/EventCardToggleButton'; | import { EventCardToggleButton } from '@/activities/timeline-activities/rows/components/EventCardToggleButton'; | ||||||
| import { | import { | ||||||
|   EventRowDynamicComponentProps, |   EventRowDynamicComponentProps, | ||||||
|   StyledEventRowItemAction, |   StyledEventRowItemAction, | ||||||
|   StyledEventRowItemColumn, |   StyledEventRowItemColumn, | ||||||
| } from '@/activities/timelineActivities/rows/components/EventRowDynamicComponent'; | } from '@/activities/timeline-activities/rows/components/EventRowDynamicComponent'; | ||||||
| 
 | 
 | ||||||
| type EventRowCalendarEventProps = EventRowDynamicComponentProps; | type EventRowCalendarEventProps = EventRowDynamicComponentProps; | ||||||
| 
 | 
 | ||||||
| @@ -1,8 +1,8 @@ | |||||||
| import { Meta, StoryObj } from '@storybook/react'; | import { Meta, StoryObj } from '@storybook/react'; | ||||||
| import { graphql, HttpResponse } from 'msw'; | import { HttpResponse, graphql } from 'msw'; | ||||||
| import { ComponentDecorator } from 'twenty-ui'; | import { ComponentDecorator } from 'twenty-ui'; | ||||||
| 
 | 
 | ||||||
| import { EventCardCalendarEvent } from '@/activities/timelineActivities/rows/calendar/components/EventCardCalendarEvent'; | import { EventCardCalendarEvent } from '@/activities/timeline-activities/rows/calendar/components/EventCardCalendarEvent'; | ||||||
| import { ObjectMetadataItemsDecorator } from '~/testing/decorators/ObjectMetadataItemsDecorator'; | import { ObjectMetadataItemsDecorator } from '~/testing/decorators/ObjectMetadataItemsDecorator'; | ||||||
| import { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator'; | import { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator'; | ||||||
| 
 | 
 | ||||||
| @@ -1,6 +1,6 @@ | |||||||
| import { IconCirclePlus, IconEditCircle, IconTrash, useIcons } from 'twenty-ui'; | import { IconCirclePlus, IconEditCircle, IconTrash, useIcons } from 'twenty-ui'; | ||||||
| 
 | 
 | ||||||
| import { TimelineActivity } from '@/activities/timelineActivities/types/TimelineActivity'; | import { TimelineActivity } from '@/activities/timeline-activities/types/TimelineActivity'; | ||||||
| import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; | import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; | ||||||
| 
 | 
 | ||||||
| export const EventIconDynamicComponent = ({ | export const EventIconDynamicComponent = ({ | ||||||
| @@ -1,10 +1,10 @@ | |||||||
| import styled from '@emotion/styled'; | import styled from '@emotion/styled'; | ||||||
| 
 | 
 | ||||||
| import { EventRowActivity } from '@/activities/timelineActivities/rows/activity/components/EventRowActivity'; | import { EventRowActivity } from '@/activities/timeline-activities/rows/activity/components/EventRowActivity'; | ||||||
| import { EventRowCalendarEvent } from '@/activities/timelineActivities/rows/calendar/components/EventRowCalendarEvent'; | import { EventRowCalendarEvent } from '@/activities/timeline-activities/rows/calendar/components/EventRowCalendarEvent'; | ||||||
| import { EventRowMainObject } from '@/activities/timelineActivities/rows/main-object/components/EventRowMainObject'; | import { EventRowMainObject } from '@/activities/timeline-activities/rows/main-object/components/EventRowMainObject'; | ||||||
| import { EventRowMessage } from '@/activities/timelineActivities/rows/message/components/EventRowMessage'; | import { EventRowMessage } from '@/activities/timeline-activities/rows/message/components/EventRowMessage'; | ||||||
| import { TimelineActivity } from '@/activities/timelineActivities/types/TimelineActivity'; | import { TimelineActivity } from '@/activities/timeline-activities/types/TimelineActivity'; | ||||||
| import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; | import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; | ||||||
| import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; | import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; | ||||||
| 
 | 
 | ||||||
| @@ -1,8 +1,8 @@ | |||||||
| import styled from '@emotion/styled'; | import styled from '@emotion/styled'; | ||||||
| 
 | 
 | ||||||
| import { EventFieldDiffLabel } from '@/activities/timelineActivities/rows/main-object/components/EventFieldDiffLabel'; | import { EventFieldDiffLabel } from '@/activities/timeline-activities/rows/main-object/components/EventFieldDiffLabel'; | ||||||
| import { EventFieldDiffValue } from '@/activities/timelineActivities/rows/main-object/components/EventFieldDiffValue'; | import { EventFieldDiffValue } from '@/activities/timeline-activities/rows/main-object/components/EventFieldDiffValue'; | ||||||
| import { EventFieldDiffValueEffect } from '@/activities/timelineActivities/rows/main-object/components/EventFieldDiffValueEffect'; | import { EventFieldDiffValueEffect } from '@/activities/timeline-activities/rows/main-object/components/EventFieldDiffValueEffect'; | ||||||
| import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; | import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; | ||||||
| import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; | import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; | ||||||
| import { RecordFieldValueSelectorContextProvider } from '@/object-record/record-store/contexts/RecordFieldValueSelectorContext'; | import { RecordFieldValueSelectorContextProvider } from '@/object-record/record-store/contexts/RecordFieldValueSelectorContext'; | ||||||
| @@ -1,4 +1,4 @@ | |||||||
| import { EventFieldDiff } from '@/activities/timelineActivities/rows/main-object/components/EventFieldDiff'; | import { EventFieldDiff } from '@/activities/timeline-activities/rows/main-object/components/EventFieldDiff'; | ||||||
| import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; | import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; | ||||||
| import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; | import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; | ||||||
| 
 | 
 | ||||||
| @@ -1,11 +1,10 @@ | |||||||
| import styled from '@emotion/styled'; |  | ||||||
| 
 |  | ||||||
| import { | import { | ||||||
|   EventRowDynamicComponentProps, |   EventRowDynamicComponentProps, | ||||||
|   StyledEventRowItemAction, |   StyledEventRowItemAction, | ||||||
|   StyledEventRowItemColumn, |   StyledEventRowItemColumn, | ||||||
| } from '@/activities/timelineActivities/rows/components/EventRowDynamicComponent'; | } from '@/activities/timeline-activities/rows/components/EventRowDynamicComponent'; | ||||||
| import { EventRowMainObjectUpdated } from '@/activities/timelineActivities/rows/main-object/components/EventRowMainObjectUpdated'; | import { EventRowMainObjectUpdated } from '@/activities/timeline-activities/rows/main-object/components/EventRowMainObjectUpdated'; | ||||||
|  | import styled from '@emotion/styled'; | ||||||
| 
 | 
 | ||||||
| type EventRowMainObjectProps = EventRowDynamicComponentProps; | type EventRowMainObjectProps = EventRowDynamicComponentProps; | ||||||
| 
 | 
 | ||||||
| @@ -1,14 +1,14 @@ | |||||||
| import { useState } from 'react'; |  | ||||||
| import styled from '@emotion/styled'; | import styled from '@emotion/styled'; | ||||||
|  | import { useState } from 'react'; | ||||||
| 
 | 
 | ||||||
| import { EventCard } from '@/activities/timelineActivities/rows/components/EventCard'; | import { EventCard } from '@/activities/timeline-activities/rows/components/EventCard'; | ||||||
| import { EventCardToggleButton } from '@/activities/timelineActivities/rows/components/EventCardToggleButton'; | import { EventCardToggleButton } from '@/activities/timeline-activities/rows/components/EventCardToggleButton'; | ||||||
| import { | import { | ||||||
|   StyledEventRowItemAction, |   StyledEventRowItemAction, | ||||||
|   StyledEventRowItemColumn, |   StyledEventRowItemColumn, | ||||||
| } from '@/activities/timelineActivities/rows/components/EventRowDynamicComponent'; | } from '@/activities/timeline-activities/rows/components/EventRowDynamicComponent'; | ||||||
| import { EventFieldDiffContainer } from '@/activities/timelineActivities/rows/main-object/components/EventFieldDiffContainer'; | import { EventFieldDiffContainer } from '@/activities/timeline-activities/rows/main-object/components/EventFieldDiffContainer'; | ||||||
| import { TimelineActivity } from '@/activities/timelineActivities/types/TimelineActivity'; | import { TimelineActivity } from '@/activities/timeline-activities/types/TimelineActivity'; | ||||||
| import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; | import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; | ||||||
| import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; | import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; | ||||||
| 
 | 
 | ||||||
| @@ -1,8 +1,8 @@ | |||||||
|  | import { EventRowMainObjectUpdated } from '@/activities/timeline-activities/rows/main-object/components/EventRowMainObjectUpdated'; | ||||||
|  | import { TimelineActivity } from '@/activities/timeline-activities/types/TimelineActivity'; | ||||||
| import { Meta, StoryObj } from '@storybook/react'; | import { Meta, StoryObj } from '@storybook/react'; | ||||||
| import { ComponentDecorator, RouterDecorator } from 'twenty-ui'; | import { ComponentDecorator, RouterDecorator } from 'twenty-ui'; | ||||||
| 
 | 
 | ||||||
| import { EventRowMainObjectUpdated } from '@/activities/timelineActivities/rows/main-object/components/EventRowMainObjectUpdated'; |  | ||||||
| import { TimelineActivity } from '@/activities/timelineActivities/types/TimelineActivity'; |  | ||||||
| import { ObjectMetadataItemsDecorator } from '~/testing/decorators/ObjectMetadataItemsDecorator'; | import { ObjectMetadataItemsDecorator } from '~/testing/decorators/ObjectMetadataItemsDecorator'; | ||||||
| import { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator'; | import { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator'; | ||||||
| import { generatedMockObjectMetadataItems } from '~/testing/mock-data/generatedMockObjectMetadataItems'; | import { generatedMockObjectMetadataItems } from '~/testing/mock-data/generatedMockObjectMetadataItems'; | ||||||
| @@ -4,7 +4,7 @@ import { OverflowingTextWithTooltip } from 'twenty-ui'; | |||||||
| 
 | 
 | ||||||
| import { useEmailThread } from '@/activities/emails/hooks/useEmailThread'; | import { useEmailThread } from '@/activities/emails/hooks/useEmailThread'; | ||||||
| import { EmailThreadMessage } from '@/activities/emails/types/EmailThreadMessage'; | import { EmailThreadMessage } from '@/activities/emails/types/EmailThreadMessage'; | ||||||
| import { EventCardMessageNotShared } from '@/activities/timelineActivities/rows/message/components/EventCardMessageNotShared'; | import { EventCardMessageNotShared } from '@/activities/timeline-activities/rows/message/components/EventCardMessageNotShared'; | ||||||
| import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; | import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; | ||||||
| import { useFindOneRecord } from '@/object-record/hooks/useFindOneRecord'; | import { useFindOneRecord } from '@/object-record/hooks/useFindOneRecord'; | ||||||
| import { useUpsertRecordsInStore } from '@/object-record/record-store/hooks/useUpsertRecordsInStore'; | import { useUpsertRecordsInStore } from '@/object-record/record-store/hooks/useUpsertRecordsInStore'; | ||||||
| @@ -1,14 +1,14 @@ | |||||||
| import { useState } from 'react'; |  | ||||||
| import styled from '@emotion/styled'; | import styled from '@emotion/styled'; | ||||||
|  | import { useState } from 'react'; | ||||||
| 
 | 
 | ||||||
| import { EventCard } from '@/activities/timelineActivities/rows/components/EventCard'; | import { EventCard } from '@/activities/timeline-activities/rows/components/EventCard'; | ||||||
| import { EventCardToggleButton } from '@/activities/timelineActivities/rows/components/EventCardToggleButton'; | import { EventCardToggleButton } from '@/activities/timeline-activities/rows/components/EventCardToggleButton'; | ||||||
| import { | import { | ||||||
|   EventRowDynamicComponentProps, |   EventRowDynamicComponentProps, | ||||||
|   StyledEventRowItemAction, |   StyledEventRowItemAction, | ||||||
|   StyledEventRowItemColumn, |   StyledEventRowItemColumn, | ||||||
| } from '@/activities/timelineActivities/rows/components/EventRowDynamicComponent'; | } from '@/activities/timeline-activities/rows/components/EventRowDynamicComponent'; | ||||||
| import { EventCardMessage } from '@/activities/timelineActivities/rows/message/components/EventCardMessage'; | import { EventCardMessage } from '@/activities/timeline-activities/rows/message/components/EventCardMessage'; | ||||||
| 
 | 
 | ||||||
| type EventRowMessageProps = EventRowDynamicComponentProps; | type EventRowMessageProps = EventRowDynamicComponentProps; | ||||||
| 
 | 
 | ||||||
| @@ -1,9 +1,9 @@ | |||||||
| import { Meta, StoryObj } from '@storybook/react'; | import { Meta, StoryObj } from '@storybook/react'; | ||||||
| import { graphql, HttpResponse } from 'msw'; | import { HttpResponse, graphql } from 'msw'; | ||||||
| import { ComponentDecorator } from 'twenty-ui'; | import { ComponentDecorator } from 'twenty-ui'; | ||||||
| 
 | 
 | ||||||
| import { TimelineActivityContext } from '@/activities/timelineActivities/contexts/TimelineActivityContext'; | import { TimelineActivityContext } from '@/activities/timeline-activities/contexts/TimelineActivityContext'; | ||||||
| import { EventCardMessage } from '@/activities/timelineActivities/rows/message/components/EventCardMessage'; | import { EventCardMessage } from '@/activities/timeline-activities/rows/message/components/EventCardMessage'; | ||||||
| import { ObjectMetadataItemsDecorator } from '~/testing/decorators/ObjectMetadataItemsDecorator'; | import { ObjectMetadataItemsDecorator } from '~/testing/decorators/ObjectMetadataItemsDecorator'; | ||||||
| import { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator'; | import { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator'; | ||||||
| 
 | 
 | ||||||
| @@ -1,5 +1,5 @@ | |||||||
| import { TimelineActivity } from '@/activities/timelineActivities/types/TimelineActivity'; | import { TimelineActivity } from '@/activities/timeline-activities/types/TimelineActivity'; | ||||||
| import { filterOutInvalidTimelineActivities } from '@/activities/timelineActivities/utils/filterOutInvalidTimelineActivities'; | import { filterOutInvalidTimelineActivities } from '@/activities/timeline-activities/utils/filterOutInvalidTimelineActivities'; | ||||||
| import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; | import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; | ||||||
| import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; | import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; | ||||||
| 
 | 
 | ||||||
| @@ -1,5 +1,5 @@ | |||||||
| import { TimelineActivity } from '@/activities/timelineActivities/types/TimelineActivity'; | import { TimelineActivity } from '@/activities/timeline-activities/types/TimelineActivity'; | ||||||
| import { getTimelineActivityAuthorFullName } from '@/activities/timelineActivities/utils/getTimelineActivityAuthorFullName'; | import { getTimelineActivityAuthorFullName } from '@/activities/timeline-activities/utils/getTimelineActivityAuthorFullName'; | ||||||
| import { CurrentWorkspaceMember } from '@/auth/states/currentWorkspaceMemberState'; | import { CurrentWorkspaceMember } from '@/auth/states/currentWorkspaceMemberState'; | ||||||
| 
 | 
 | ||||||
| describe('getTimelineActivityAuthorFullName', () => { | describe('getTimelineActivityAuthorFullName', () => { | ||||||
| @@ -1,4 +1,4 @@ | |||||||
| import { TimelineActivity } from '@/activities/timelineActivities/types/TimelineActivity'; | import { TimelineActivity } from '@/activities/timeline-activities/types/TimelineActivity'; | ||||||
| import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; | import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; | ||||||
| import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; | import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; | ||||||
| 
 | 
 | ||||||
| @@ -1,5 +1,5 @@ | |||||||
| import { TimelineActivity } from '@/activities/timelineActivities/types/TimelineActivity'; | import { TimelineActivity } from '@/activities/timeline-activities/types/TimelineActivity'; | ||||||
| import { TimelineActivityLinkedObject } from '@/activities/timelineActivities/types/TimelineActivityLinkedObject'; | import { TimelineActivityLinkedObject } from '@/activities/timeline-activities/types/TimelineActivityLinkedObject'; | ||||||
| 
 | 
 | ||||||
| export const filterTimelineActivityByLinkedObjectTypes = | export const filterTimelineActivityByLinkedObjectTypes = | ||||||
|   (linkedObjectTypes: TimelineActivityLinkedObject[]) => |   (linkedObjectTypes: TimelineActivityLinkedObject[]) => | ||||||
| @@ -1,4 +1,4 @@ | |||||||
| import { TimelineActivity } from '@/activities/timelineActivities/types/TimelineActivity'; | import { TimelineActivity } from '@/activities/timeline-activities/types/TimelineActivity'; | ||||||
| import { CurrentWorkspaceMember } from '@/auth/states/currentWorkspaceMemberState'; | import { CurrentWorkspaceMember } from '@/auth/states/currentWorkspaceMemberState'; | ||||||
| import { isDefined } from '~/utils/isDefined'; | import { isDefined } from '~/utils/isDefined'; | ||||||
| 
 | 
 | ||||||
| @@ -1,4 +1,4 @@ | |||||||
| import { TimelineActivity } from '@/activities/timelineActivities/types/TimelineActivity'; | import { TimelineActivity } from '@/activities/timeline-activities/types/TimelineActivity'; | ||||||
| import { isDefined } from '~/utils/isDefined'; | import { isDefined } from '~/utils/isDefined'; | ||||||
| 
 | 
 | ||||||
| export type EventGroup = { | export type EventGroup = { | ||||||
| @@ -18,7 +18,7 @@ import { logDebug } from '~/utils/logDebug'; | |||||||
|  |  | ||||||
| import { GraphQLFormattedError } from 'graphql'; | import { GraphQLFormattedError } from 'graphql'; | ||||||
| import { ApolloManager } from '../types/apolloManager.interface'; | import { ApolloManager } from '../types/apolloManager.interface'; | ||||||
| import { loggerLink } from '../utils'; | import { loggerLink } from '../utils/loggerLink'; | ||||||
|  |  | ||||||
| const logger = loggerLink(() => 'Twenty'); | const logger = loggerLink(() => 'Twenty'); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,7 +2,7 @@ import { expect } from '@storybook/test'; | |||||||
| 
 | 
 | ||||||
| import { OperationType } from '@/apollo/types/operation-type'; | import { OperationType } from '@/apollo/types/operation-type'; | ||||||
| 
 | 
 | ||||||
| import formatTitle from '../format-title'; | import formatTitle from '../formatTitle'; | ||||||
| 
 | 
 | ||||||
| describe('formatTitle', () => { | describe('formatTitle', () => { | ||||||
|   it('should correctly format the title', () => { |   it('should correctly format the title', () => { | ||||||
| @@ -1,4 +0,0 @@ | |||||||
| // More work needed here |  | ||||||
| describe.skip('loggerLink', () => { |  | ||||||
|   it('should log the correct message', () => {}); |  | ||||||
| }); |  | ||||||
| @@ -4,7 +4,7 @@ import { isDefined } from '~/utils/isDefined'; | |||||||
| import { logDebug } from '~/utils/logDebug'; | import { logDebug } from '~/utils/logDebug'; | ||||||
| import { logError } from '~/utils/logError'; | import { logError } from '~/utils/logError'; | ||||||
| 
 | 
 | ||||||
| import formatTitle from './format-title'; | import formatTitle from './formatTitle'; | ||||||
| 
 | 
 | ||||||
| const getGroup = (collapsed: boolean) => | const getGroup = (collapsed: boolean) => | ||||||
|   collapsed |   collapsed | ||||||
| @@ -1,4 +1,4 @@ | |||||||
| import { createAppRouter } from '@/app/utils/createAppRouter'; | import { useCreateAppRouter } from '@/app/hooks/useCreateAppRouter'; | ||||||
| import { billingState } from '@/client-config/states/billingState'; | import { billingState } from '@/client-config/states/billingState'; | ||||||
| import { useIsFeatureEnabled } from '@/workspace/hooks/useIsFeatureEnabled'; | import { useIsFeatureEnabled } from '@/workspace/hooks/useIsFeatureEnabled'; | ||||||
| import { RouterProvider } from 'react-router-dom'; | import { RouterProvider } from 'react-router-dom'; | ||||||
| @@ -17,7 +17,7 @@ export const AppRouter = () => { | |||||||
|  |  | ||||||
|   return ( |   return ( | ||||||
|     <RouterProvider |     <RouterProvider | ||||||
|       router={createAppRouter( |       router={useCreateAppRouter( | ||||||
|         isBillingPageEnabled, |         isBillingPageEnabled, | ||||||
|         isCRMMigrationEnabled, |         isCRMMigrationEnabled, | ||||||
|         isServerlessFunctionSettingsEnabled, |         isServerlessFunctionSettingsEnabled, | ||||||
|   | |||||||
| @@ -15,7 +15,7 @@ import { DialogManager } from '@/ui/feedback/dialog-manager/components/DialogMan | |||||||
| import { DialogManagerScope } from '@/ui/feedback/dialog-manager/scopes/DialogManagerScope'; | import { DialogManagerScope } from '@/ui/feedback/dialog-manager/scopes/DialogManagerScope'; | ||||||
| import { SnackBarProvider } from '@/ui/feedback/snack-bar-manager/components/SnackBarProvider'; | import { SnackBarProvider } from '@/ui/feedback/snack-bar-manager/components/SnackBarProvider'; | ||||||
| import { AppThemeProvider } from '@/ui/theme/components/AppThemeProvider'; | import { AppThemeProvider } from '@/ui/theme/components/AppThemeProvider'; | ||||||
| import { PageTitle } from '@/ui/utilities/page-title/PageTitle'; | import { PageTitle } from '@/ui/utilities/page-title/components/PageTitle'; | ||||||
| import { UserProvider } from '@/users/components/UserProvider'; | import { UserProvider } from '@/users/components/UserProvider'; | ||||||
| import { UserProviderEffect } from '@/users/components/UserProviderEffect'; | import { UserProviderEffect } from '@/users/components/UserProviderEffect'; | ||||||
| import { StrictMode } from 'react'; | import { StrictMode } from 'react'; | ||||||
|   | |||||||
| @@ -3,8 +3,8 @@ import { SettingsRoutes } from '@/app/components/SettingsRoutes'; | |||||||
| import { VerifyEffect } from '@/auth/components/VerifyEffect'; | import { VerifyEffect } from '@/auth/components/VerifyEffect'; | ||||||
| import indexAppPath from '@/navigation/utils/indexAppPath'; | import indexAppPath from '@/navigation/utils/indexAppPath'; | ||||||
| import { AppPath } from '@/types/AppPath'; | import { AppPath } from '@/types/AppPath'; | ||||||
| import { BlankLayout } from '@/ui/layout/page/BlankLayout'; | import { BlankLayout } from '@/ui/layout/page/components/BlankLayout'; | ||||||
| import { DefaultLayout } from '@/ui/layout/page/DefaultLayout'; | import { DefaultLayout } from '@/ui/layout/page/components/DefaultLayout'; | ||||||
| import { | import { | ||||||
|   createBrowserRouter, |   createBrowserRouter, | ||||||
|   createRoutesFromElements, |   createRoutesFromElements, | ||||||
| @@ -25,7 +25,7 @@ import { InviteTeam } from '~/pages/onboarding/InviteTeam'; | |||||||
| import { PaymentSuccess } from '~/pages/onboarding/PaymentSuccess'; | import { PaymentSuccess } from '~/pages/onboarding/PaymentSuccess'; | ||||||
| import { SyncEmails } from '~/pages/onboarding/SyncEmails'; | import { SyncEmails } from '~/pages/onboarding/SyncEmails'; | ||||||
| 
 | 
 | ||||||
| export const createAppRouter = ( | export const useCreateAppRouter = ( | ||||||
|   isBillingEnabled?: boolean, |   isBillingEnabled?: boolean, | ||||||
|   isCRMMigrationEnabled?: boolean, |   isCRMMigrationEnabled?: boolean, | ||||||
|   isServerlessFunctionSettingsEnabled?: boolean, |   isServerlessFunctionSettingsEnabled?: boolean, | ||||||
| @@ -6,7 +6,7 @@ import { | |||||||
|   UriFunction, |   UriFunction, | ||||||
| } from '@apollo/client'; | } from '@apollo/client'; | ||||||
|  |  | ||||||
| import { loggerLink } from '@/apollo/utils'; | import { loggerLink } from '@/apollo/utils/loggerLink'; | ||||||
| import { | import { | ||||||
|   AuthTokenPair, |   AuthTokenPair, | ||||||
|   RenewTokenDocument, |   RenewTokenDocument, | ||||||
|   | |||||||
| @@ -16,7 +16,7 @@ import { getCompanyDomainName } from '@/object-metadata/utils/getCompanyDomainNa | |||||||
| import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords'; | import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords'; | ||||||
| import { useSearchRecords } from '@/object-record/hooks/useSearchRecords'; | import { useSearchRecords } from '@/object-record/hooks/useSearchRecords'; | ||||||
| import { makeOrFilterVariables } from '@/object-record/utils/makeOrFilterVariables'; | import { makeOrFilterVariables } from '@/object-record/utils/makeOrFilterVariables'; | ||||||
| import { Opportunity } from '@/opportunities/Opportunity'; | import { Opportunity } from '@/opportunities/types/Opportunity'; | ||||||
| import { Person } from '@/people/types/Person'; | import { Person } from '@/people/types/Person'; | ||||||
| import { LightIconButton } from '@/ui/input/button/components/LightIconButton'; | import { LightIconButton } from '@/ui/input/button/components/LightIconButton'; | ||||||
| import { SelectableItem } from '@/ui/layout/selectable-list/components/SelectableItem'; | import { SelectableItem } from '@/ui/layout/selectable-list/components/SelectableItem'; | ||||||
|   | |||||||
| @@ -4,7 +4,7 @@ import { useRecoilValue } from 'recoil'; | |||||||
|  |  | ||||||
| import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState'; | import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState'; | ||||||
| import { Favorite } from '@/favorites/types/Favorite'; | import { Favorite } from '@/favorites/types/Favorite'; | ||||||
| import { sortFavorites } from '@/favorites/utils/sort-favorites.util'; | import { sortFavorites } from '@/favorites/utils/sortFavorites'; | ||||||
| import { useGetObjectRecordIdentifierByNameSingular } from '@/object-metadata/hooks/useGetObjectRecordIdentifierByNameSingular'; | import { useGetObjectRecordIdentifierByNameSingular } from '@/object-metadata/hooks/useGetObjectRecordIdentifierByNameSingular'; | ||||||
| import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem'; | import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem'; | ||||||
| import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; | import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| import { useApolloFactory } from '@/apollo/hooks/useApolloFactory'; | import { useApolloFactory } from '@/apollo/hooks/useApolloFactory'; | ||||||
| import { REACT_APP_SERVER_BASE_URL } from '~/config'; | import { REACT_APP_SERVER_BASE_URL } from '~/config'; | ||||||
|  |  | ||||||
| import { ApolloMetadataClientContext } from '../context/ApolloClientMetadataContext'; | import { ApolloMetadataClientContext } from '../contexts/ApolloClientMetadataContext'; | ||||||
|  |  | ||||||
| export const ApolloMetadataClientProvider = ({ | export const ApolloMetadataClientProvider = ({ | ||||||
|   children, |   children, | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| import React, { useMemo } from 'react'; | import React, { useMemo } from 'react'; | ||||||
| import { useRecoilValue } from 'recoil'; | import { useRecoilValue } from 'recoil'; | ||||||
|  |  | ||||||
| import { PreComputedChipGeneratorsContext } from '@/object-metadata/context/PreComputedChipGeneratorsContext'; | import { PreComputedChipGeneratorsContext } from '@/object-metadata/contexts/PreComputedChipGeneratorsContext'; | ||||||
| import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; | import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState'; | ||||||
| import { getRecordChipGenerators } from '@/object-record/utils/getRecordChipGenerators'; | import { getRecordChipGenerators } from '@/object-record/utils/getRecordChipGenerators'; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| import { ReactNode } from 'react'; | import { ReactNode } from 'react'; | ||||||
|  |  | ||||||
| import { ApolloMetadataClientContext } from '@/object-metadata/context/ApolloClientMetadataContext'; | import { ApolloMetadataClientContext } from '@/object-metadata/contexts/ApolloClientMetadataContext'; | ||||||
| import { mockedMetadataApolloClient } from '~/testing/mockedMetadataApolloClient'; | import { mockedMetadataApolloClient } from '~/testing/mockedMetadataApolloClient'; | ||||||
|  |  | ||||||
| export const ApolloMetadataClientMockedProvider = ({ | export const ApolloMetadataClientMockedProvider = ({ | ||||||
|   | |||||||
| @@ -1,7 +1,6 @@ | |||||||
| import { useContext } from 'react'; | import { ApolloMetadataClientContext } from '@/object-metadata/contexts/ApolloClientMetadataContext'; | ||||||
| import { useApolloClient } from '@apollo/client'; | import { useApolloClient } from '@apollo/client'; | ||||||
|  | import { useContext } from 'react'; | ||||||
| import { ApolloMetadataClientContext } from '../context/ApolloClientMetadataContext'; |  | ||||||
|  |  | ||||||
| export const useApolloMetadataClient = () => { | export const useApolloMetadataClient = () => { | ||||||
|   const apolloMetadataClient = useContext(ApolloMetadataClientContext); |   const apolloMetadataClient = useContext(ApolloMetadataClientContext); | ||||||
|   | |||||||
| @@ -1,4 +1,4 @@ | |||||||
| import { PreComputedChipGeneratorsContext } from '@/object-metadata/context/PreComputedChipGeneratorsContext'; | import { PreComputedChipGeneratorsContext } from '@/object-metadata/contexts/PreComputedChipGeneratorsContext'; | ||||||
| import { generateDefaultRecordChipData } from '@/object-metadata/utils/generateDefaultRecordChipData'; | import { generateDefaultRecordChipData } from '@/object-metadata/utils/generateDefaultRecordChipData'; | ||||||
| import { ObjectRecord } from '@/object-record/types/ObjectRecord'; | import { ObjectRecord } from '@/object-record/types/ObjectRecord'; | ||||||
| import { useContext } from 'react'; | import { useContext } from 'react'; | ||||||
|   | |||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user
	 Charles Bochet
					Charles Bochet