mirror of
				https://github.com/lingble/twenty.git
				synced 2025-10-30 20:27:55 +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/cache | ||||
| projectStructure.cache.json | ||||
|  | ||||
| .pnp.* | ||||
| .yarn/* | ||||
|   | ||||
							
								
								
									
										2
									
								
								nx.json
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								nx.json
									
									
									
									
									
								
							| @@ -113,7 +113,7 @@ | ||||
|       "outputs": ["{projectRoot}/{options.output-dir}"], | ||||
|       "options": { | ||||
|         "cwd": "{projectRoot}", | ||||
|         "command": "storybook build", | ||||
|         "command": "VITE_DISABLE_ESLINT_CHECKER=true storybook build", | ||||
|         "output-dir": "storybook-static", | ||||
|         "config-dir": ".storybook" | ||||
|       } | ||||
|   | ||||
| @@ -294,6 +294,7 @@ | ||||
|     "eslint-plugin-jsx-a11y": "^6.8.0", | ||||
|     "eslint-plugin-prefer-arrow": "^1.2.3", | ||||
|     "eslint-plugin-prettier": "^5.1.2", | ||||
|     "eslint-plugin-project-structure": "^3.7.2", | ||||
|     "eslint-plugin-react": "^7.33.2", | ||||
|     "eslint-plugin-react-hooks": "^4.6.0", | ||||
|     "eslint-plugin-react-refresh": "^0.4.4", | ||||
|   | ||||
| @@ -21,7 +21,14 @@ module.exports = { | ||||
|       parserOptions: { | ||||
|         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'], | ||||
|   coverageThreshold: { | ||||
|     global: { | ||||
|       statements: 60, | ||||
|       statements: 59, | ||||
|       lines: 55, | ||||
|       functions: 50, | ||||
|       functions: 49, | ||||
|     }, | ||||
|   }, | ||||
|   collectCoverageFrom: ['<rootDir>/src/**/*.ts'], | ||||
|   | ||||
| @@ -52,7 +52,9 @@ | ||||
|         "reportUnusedDisableDirectives": "error" | ||||
|       }, | ||||
|       "configurations": { | ||||
|         "ci": { "eslintConfig": "{projectRoot}/.eslintrc-ci.cjs" }, | ||||
|         "ci": { | ||||
|           "eslintConfig": "{projectRoot}/.eslintrc-ci.cjs" | ||||
|         }, | ||||
|         "fix": {} | ||||
|       } | ||||
|     }, | ||||
|   | ||||
| @@ -8,9 +8,9 @@ import { AppThemeProvider } from '@/ui/theme/components/AppThemeProvider'; | ||||
| import { isDefined } from '~/utils/isDefined'; | ||||
| import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull'; | ||||
| 
 | ||||
| import { AttachmentIcon } from '../files/components/AttachmentIcon'; | ||||
| import { AttachmentType } from '../files/types/Attachment'; | ||||
| import { getFileType } from '../files/utils/getFileType'; | ||||
| import { AttachmentIcon } from '../../files/components/AttachmentIcon'; | ||||
| import { AttachmentType } from '../../files/types/Attachment'; | ||||
| import { getFileType } from '../../files/utils/getFileType'; | ||||
| 
 | ||||
| const StyledFileInput = styled.input` | ||||
|   display: none; | ||||
| @@ -1,8 +1,8 @@ | ||||
| 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: { | ||||
|     ...defaultBlockSpecs, | ||||
|     file: FileBlock, | ||||
| @@ -18,7 +18,7 @@ import { | ||||
| 
 | ||||
| import { SuggestionItem } from '@/ui/input/editor/components/CustomSlashMenu'; | ||||
| 
 | ||||
| import { blockSchema } from './schema'; | ||||
| import { BLOCK_SCHEMA } from '../constants/Schema'; | ||||
| 
 | ||||
| const Icons: Record<string, IconComponent> = { | ||||
|   'Heading 1': IconH1, | ||||
| @@ -35,7 +35,7 @@ const Icons: Record<string, IconComponent> = { | ||||
|   Emoji: IconMoodSmile, | ||||
| }; | ||||
| 
 | ||||
| export const getSlashMenu = (editor: typeof blockSchema.BlockNoteEditor) => { | ||||
| export const getSlashMenu = (editor: typeof BLOCK_SCHEMA.BlockNoteEditor) => { | ||||
|   const items: SuggestionItem[] = [ | ||||
|     ...getDefaultReactSlashMenuItems(editor).map((x) => ({ | ||||
|       ...x, | ||||
| @@ -5,9 +5,9 @@ import { H3Title } from 'twenty-ui'; | ||||
| import { CalendarMonthCard } from '@/activities/calendar/components/CalendarMonthCard'; | ||||
| import { TIMELINE_CALENDAR_EVENTS_DEFAULT_PAGE_SIZE } from '@/activities/calendar/constants/Calendar'; | ||||
| 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 { getTimelineCalendarEventsFromCompanyId } from '@/activities/calendar/queries/getTimelineCalendarEventsFromCompanyId'; | ||||
| import { getTimelineCalendarEventsFromPersonId } from '@/activities/calendar/queries/getTimelineCalendarEventsFromPersonId'; | ||||
| import { CustomResolverFetchMoreLoader } from '@/activities/components/CustomResolverFetchMoreLoader'; | ||||
| import { SkeletonLoader } from '@/activities/components/SkeletonLoader'; | ||||
| import { useCustomResolver } from '@/activities/hooks/useCustomResolver'; | ||||
|   | ||||
| @@ -1,10 +1,10 @@ | ||||
| import { getOperationName } from '@apollo/client/utilities'; | ||||
| import { Meta, StoryObj } from '@storybook/react'; | ||||
| import { graphql, HttpResponse } from 'msw'; | ||||
| import { HttpResponse, graphql } from 'msw'; | ||||
| import { ComponentDecorator } from 'twenty-ui'; | ||||
|  | ||||
| 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 { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator'; | ||||
| import { graphqlMocks } from '~/testing/graphqlMocks'; | ||||
|   | ||||
| @@ -1,7 +1,6 @@ | ||||
| import { timelineCalendarEventParticipantFragment } from '@/activities/calendar/graphql/queries/fragments/timelineCalendarEventParticipantFragment'; | ||||
| import { gql } from '@apollo/client'; | ||||
| 
 | ||||
| import { timelineCalendarEventParticipantFragment } from '@/activities/calendar/queries/fragments/timelineCalendarEventParticipantFragment'; | ||||
| 
 | ||||
| export const timelineCalendarEventFragment = gql` | ||||
|   fragment TimelineCalendarEventFragment on TimelineCalendarEvent { | ||||
|     id | ||||
| @@ -1,7 +1,6 @@ | ||||
| import { timelineCalendarEventFragment } from '@/activities/calendar/graphql/queries/fragments/timelineCalendarEventFragment'; | ||||
| import { gql } from '@apollo/client'; | ||||
| 
 | ||||
| import { timelineCalendarEventFragment } from '@/activities/calendar/queries/fragments/timelineCalendarEventFragment'; | ||||
| 
 | ||||
| export const timelineCalendarEventWithTotalFragment = gql` | ||||
|   fragment TimelineCalendarEventsWithTotalFragment on TimelineCalendarEventsWithTotal { | ||||
|     totalNumberOfCalendarEvents | ||||
| @@ -1,7 +1,6 @@ | ||||
| import { timelineCalendarEventWithTotalFragment } from '@/activities/calendar/graphql/queries/fragments/timelineCalendarEventWithTotalFragment'; | ||||
| import { gql } from '@apollo/client'; | ||||
| 
 | ||||
| import { timelineCalendarEventWithTotalFragment } from '@/activities/calendar/queries/fragments/timelineCalendarEventWithTotalFragment'; | ||||
| 
 | ||||
| export const getTimelineCalendarEventsFromCompanyId = gql` | ||||
|   query GetTimelineCalendarEventsFromCompanyId( | ||||
|     $companyId: UUID! | ||||
| @@ -1,7 +1,6 @@ | ||||
| import { timelineCalendarEventWithTotalFragment } from '@/activities/calendar/graphql/queries/fragments/timelineCalendarEventWithTotalFragment'; | ||||
| import { gql } from '@apollo/client'; | ||||
| 
 | ||||
| import { timelineCalendarEventWithTotalFragment } from '@/activities/calendar/queries/fragments/timelineCalendarEventWithTotalFragment'; | ||||
| 
 | ||||
| export const getTimelineCalendarEventsFromPersonId = gql` | ||||
|   query GetTimelineCalendarEventsFromPersonId( | ||||
|     $personId: UUID! | ||||
| @@ -7,7 +7,6 @@ import { Key } from 'ts-key-enum'; | ||||
| import { useDebouncedCallback } from 'use-debounce'; | ||||
| import { v4 } from 'uuid'; | ||||
|  | ||||
| import { blockSchema } from '@/activities/blocks/schema'; | ||||
| import { useUpsertActivity } from '@/activities/hooks/useUpsertActivity'; | ||||
| import { activityBodyFamilyState } from '@/activities/states/activityBodyFamilyState'; | ||||
| import { activityTitleHasBeenSetFamilyState } from '@/activities/states/activityTitleHasBeenSetFamilyState'; | ||||
| @@ -27,6 +26,7 @@ import { isUndefinedOrNull } from '~/utils/isUndefinedOrNull'; | ||||
|  | ||||
| import { getFileType } from '../files/utils/getFileType'; | ||||
|  | ||||
| import { BLOCK_SCHEMA } from '@/activities/blocks/constants/Schema'; | ||||
| import { Note } from '@/activities/types/Note'; | ||||
| import { Task } from '@/activities/types/Task'; | ||||
| import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; | ||||
| @@ -287,7 +287,7 @@ export const RichTextEditor = ({ | ||||
|   const editor = useCreateBlockNote({ | ||||
|     initialContent: initialBody, | ||||
|     domAttributes: { editor: { class: 'editor' } }, | ||||
|     schema: blockSchema, | ||||
|     schema: BLOCK_SCHEMA, | ||||
|     uploadFile: handleUploadAttachment, | ||||
|   }); | ||||
|  | ||||
|   | ||||
| @@ -6,8 +6,8 @@ import { CustomResolverFetchMoreLoader } from '@/activities/components/CustomRes | ||||
| import { SkeletonLoader } from '@/activities/components/SkeletonLoader'; | ||||
| import { EmailThreadPreview } from '@/activities/emails/components/EmailThreadPreview'; | ||||
| import { TIMELINE_THREADS_DEFAULT_PAGE_SIZE } from '@/activities/emails/constants/Messaging'; | ||||
| import { getTimelineThreadsFromCompanyId } from '@/activities/emails/queries/getTimelineThreadsFromCompanyId'; | ||||
| import { getTimelineThreadsFromPersonId } from '@/activities/emails/queries/getTimelineThreadsFromPersonId'; | ||||
| import { getTimelineThreadsFromCompanyId } from '@/activities/emails/graphql/queries/getTimelineThreadsFromCompanyId'; | ||||
| import { getTimelineThreadsFromPersonId } from '@/activities/emails/graphql/queries/getTimelineThreadsFromPersonId'; | ||||
| import { useCustomResolver } from '@/activities/hooks/useCustomResolver'; | ||||
| import { ActivityTargetableObject } from '@/activities/types/ActivityTargetableEntity'; | ||||
| import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| 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` | ||||
|   fragment TimelineThreadFragment on TimelineThread { | ||||
| @@ -1,7 +1,6 @@ | ||||
| import { timelineThreadFragment } from '@/activities/emails/graphql/queries/fragments/timelineThreadFragment'; | ||||
| import { gql } from '@apollo/client'; | ||||
| 
 | ||||
| import { timelineThreadFragment } from '@/activities/emails/queries/fragments/timelineThreadFragment'; | ||||
| 
 | ||||
| export const timelineThreadWithTotalFragment = gql` | ||||
|   fragment TimelineThreadsWithTotalFragment on TimelineThreadsWithTotal { | ||||
|     totalNumberOfThreads | ||||
| @@ -1,7 +1,6 @@ | ||||
| import { timelineThreadWithTotalFragment } from '@/activities/emails/graphql/queries/fragments/timelineThreadWithTotalFragment'; | ||||
| import { gql } from '@apollo/client'; | ||||
| 
 | ||||
| import { timelineThreadWithTotalFragment } from '@/activities/emails/queries/fragments/timelineThreadWithTotalFragment'; | ||||
| 
 | ||||
| export const getTimelineThreadsFromCompanyId = gql` | ||||
|   query GetTimelineThreadsFromCompanyId( | ||||
|     $companyId: UUID! | ||||
| @@ -1,6 +1,6 @@ | ||||
| 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` | ||||
|   query GetTimelineThreadsFromPersonId( | ||||
| @@ -1,7 +1,7 @@ | ||||
| import { useRecoilValue } from 'recoil'; | ||||
|  | ||||
| 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 { isDefined } from '~/utils/isDefined'; | ||||
|  | ||||
|   | ||||
| @@ -4,7 +4,7 @@ import { useCreateActivityInDB } from '@/activities/hooks/useCreateActivityInDB' | ||||
| import { useRefreshShowPageFindManyActivitiesQueries } from '@/activities/hooks/useRefreshShowPageFindManyActivitiesQueries'; | ||||
| import { isActivityInCreateModeState } from '@/activities/states/isActivityInCreateModeState'; | ||||
| 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 { Task } from '@/activities/types/Task'; | ||||
| import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; | ||||
|   | ||||
| @@ -3,7 +3,7 @@ import { useRecoilState } from 'recoil'; | ||||
|  | ||||
| import { useActivities } from '@/activities/hooks/useActivities'; | ||||
| 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 { RecordGqlOperationVariables } from '@/object-record/graphql/types/RecordGqlOperationVariables'; | ||||
| import { isDeeplyEqual } from '~/utils/isDeeplyEqual'; | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| import { useOpenCreateActivityDrawer } from '@/activities/hooks/useOpenCreateActivityDrawer'; | ||||
| 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 = () => { | ||||
|   const openCreateActivity = useOpenCreateActivityDrawer({ | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| 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 { Task } from '@/activities/types/Task'; | ||||
| import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; | ||||
|   | ||||
| @@ -1,10 +1,10 @@ | ||||
| import styled from '@emotion/styled'; | ||||
| import { ReactElement } from 'react'; | ||||
| 
 | ||||
| import { EventsGroup } from '@/activities/timelineActivities/components/EventsGroup'; | ||||
| import { TimelineActivity } from '@/activities/timelineActivities/types/TimelineActivity'; | ||||
| import { filterOutInvalidTimelineActivities } from '@/activities/timelineActivities/utils/filterOutInvalidTimelineActivities'; | ||||
| import { groupEventsByMonth } from '@/activities/timelineActivities/utils/groupEventsByMonth'; | ||||
| import { EventsGroup } from '@/activities/timeline-activities/components/EventsGroup'; | ||||
| import { TimelineActivity } from '@/activities/timeline-activities/types/TimelineActivity'; | ||||
| import { filterOutInvalidTimelineActivities } from '@/activities/timeline-activities/utils/filterOutInvalidTimelineActivities'; | ||||
| import { groupEventsByMonth } from '@/activities/timeline-activities/utils/groupEventsByMonth'; | ||||
| import { ActivityTargetableObject } from '@/activities/types/ActivityTargetableEntity'; | ||||
| import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem'; | ||||
| import { useObjectMetadataItems } from '@/object-metadata/hooks/useObjectMetadataItems'; | ||||
| @@ -2,13 +2,13 @@ import styled from '@emotion/styled'; | ||||
| import { useContext } from 'react'; | ||||
| 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 { EventIconDynamicComponent } from '@/activities/timelineActivities/rows/components/EventIconDynamicComponent'; | ||||
| import { EventRowDynamicComponent } from '@/activities/timelineActivities/rows/components/EventRowDynamicComponent'; | ||||
| import { TimelineActivity } from '@/activities/timelineActivities/types/TimelineActivity'; | ||||
| import { getTimelineActivityAuthorFullName } from '@/activities/timelineActivities/utils/getTimelineActivityAuthorFullName'; | ||||
| import { useLinkedObjectObjectMetadataItem } from '@/activities/timeline-activities/hooks/useLinkedObjectObjectMetadataItem'; | ||||
| import { EventIconDynamicComponent } from '@/activities/timeline-activities/rows/components/EventIconDynamicComponent'; | ||||
| import { EventRowDynamicComponent } from '@/activities/timeline-activities/rows/components/EventRowDynamicComponent'; | ||||
| import { TimelineActivity } from '@/activities/timeline-activities/types/TimelineActivity'; | ||||
| import { getTimelineActivityAuthorFullName } from '@/activities/timeline-activities/utils/getTimelineActivityAuthorFullName'; | ||||
| import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState'; | ||||
| import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; | ||||
| import { beautifyPastDateRelativeToNow } from '~/utils/date-utils'; | ||||
| @@ -1,7 +1,7 @@ | ||||
| import styled from '@emotion/styled'; | ||||
| 
 | ||||
| import { EventRow } from '@/activities/timelineActivities/components/EventRow'; | ||||
| import { EventGroup } from '@/activities/timelineActivities/utils/groupEventsByMonth'; | ||||
| import { EventRow } from '@/activities/timeline-activities/components/EventRow'; | ||||
| import { EventGroup } from '@/activities/timeline-activities/utils/groupEventsByMonth'; | ||||
| import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; | ||||
| 
 | ||||
| type EventsGroupProps = { | ||||
| @@ -2,9 +2,9 @@ import styled from '@emotion/styled'; | ||||
| 
 | ||||
| import { CustomResolverFetchMoreLoader } from '@/activities/components/CustomResolverFetchMoreLoader'; | ||||
| import { SkeletonLoader } from '@/activities/components/SkeletonLoader'; | ||||
| import { EventList } from '@/activities/timelineActivities/components/EventList'; | ||||
| import { TimelineCreateButtonGroup } from '@/activities/timelineActivities/components/TimelineCreateButtonGroup'; | ||||
| import { useTimelineActivities } from '@/activities/timelineActivities/hooks/useTimelineActivities'; | ||||
| import { EventList } from '@/activities/timeline-activities/components/EventList'; | ||||
| import { TimelineCreateButtonGroup } from '@/activities/timeline-activities/components/TimelineCreateButtonGroup'; | ||||
| import { useTimelineActivities } from '@/activities/timeline-activities/hooks/useTimelineActivities'; | ||||
| import { ActivityTargetableObject } from '@/activities/types/ActivityTargetableEntity'; | ||||
| import AnimatedPlaceholder from '@/ui/layout/animated-placeholder/components/AnimatedPlaceholder'; | ||||
| import { | ||||
| @@ -46,7 +46,7 @@ export const TimelineActivities = ({ | ||||
|   const isTimelineActivitiesEmpty = | ||||
|     !timelineActivities || timelineActivities.length === 0; | ||||
| 
 | ||||
|   if (loading) { | ||||
|   if (loading === true) { | ||||
|     return <SkeletonLoader withSubSections />; | ||||
|   } | ||||
| 
 | ||||
| @@ -1,9 +1,9 @@ | ||||
| import { Meta, StoryObj } from '@storybook/react'; | ||||
| import { graphql, HttpResponse } from 'msw'; | ||||
| import { HttpResponse, graphql } from 'msw'; | ||||
| import { ComponentDecorator } from 'twenty-ui'; | ||||
| 
 | ||||
| import { TimelineActivities } from '@/activities/timelineActivities/components/TimelineActivities'; | ||||
| import { TimelineActivityContext } from '@/activities/timelineActivities/contexts/TimelineActivityContext'; | ||||
| import { TimelineActivities } from '@/activities/timeline-activities/components/TimelineActivities'; | ||||
| import { TimelineActivityContext } from '@/activities/timeline-activities/contexts/TimelineActivityContext'; | ||||
| import { ObjectMetadataItemsDecorator } from '~/testing/decorators/ObjectMetadataItemsDecorator'; | ||||
| import { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator'; | ||||
| import { mockedTimelineActivities } from '~/testing/mock-data/timeline-activities'; | ||||
| @@ -1,6 +1,6 @@ | ||||
| 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'; | ||||
| 
 | ||||
| jest.mock('@/object-record/hooks/useFindManyRecords', () => ({ | ||||
| @@ -1,5 +1,5 @@ | ||||
| import { useLinkedObjectsTitle } from '@/activities/timelineActivities/hooks/useLinkedObjectsTitle'; | ||||
| import { TimelineActivity } from '@/activities/timelineActivities/types/TimelineActivity'; | ||||
| import { useLinkedObjectsTitle } from '@/activities/timeline-activities/hooks/useLinkedObjectsTitle'; | ||||
| import { TimelineActivity } from '@/activities/timeline-activities/types/TimelineActivity'; | ||||
| import { ActivityTargetableObject } from '@/activities/types/ActivityTargetableEntity'; | ||||
| import { getActivityTargetObjectFieldIdName } from '@/activities/utils/getActivityTargetObjectFieldIdName'; | ||||
| import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem'; | ||||
| @@ -5,7 +5,7 @@ import { | ||||
|   EventRowDynamicComponentProps, | ||||
|   StyledEventRowItemAction, | ||||
|   StyledEventRowItemColumn, | ||||
| } from '@/activities/timelineActivities/rows/components/EventRowDynamicComponent'; | ||||
| } from '@/activities/timeline-activities/rows/components/EventRowDynamicComponent'; | ||||
| import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; | ||||
| import { useGetRecordFromCache } from '@/object-record/cache/hooks/useGetRecordFromCache'; | ||||
| import { isNonEmptyString } from '@sniptt/guards'; | ||||
| @@ -1,14 +1,14 @@ | ||||
| import { useState } from 'react'; | ||||
| import styled from '@emotion/styled'; | ||||
| import { useState } from 'react'; | ||||
| 
 | ||||
| import { EventCardCalendarEvent } from '@/activities/timelineActivities/rows/calendar/components/EventCardCalendarEvent'; | ||||
| import { EventCard } from '@/activities/timelineActivities/rows/components/EventCard'; | ||||
| import { EventCardToggleButton } from '@/activities/timelineActivities/rows/components/EventCardToggleButton'; | ||||
| import { EventCardCalendarEvent } from '@/activities/timeline-activities/rows/calendar/components/EventCardCalendarEvent'; | ||||
| import { EventCard } from '@/activities/timeline-activities/rows/components/EventCard'; | ||||
| import { EventCardToggleButton } from '@/activities/timeline-activities/rows/components/EventCardToggleButton'; | ||||
| import { | ||||
|   EventRowDynamicComponentProps, | ||||
|   StyledEventRowItemAction, | ||||
|   StyledEventRowItemColumn, | ||||
| } from '@/activities/timelineActivities/rows/components/EventRowDynamicComponent'; | ||||
| } from '@/activities/timeline-activities/rows/components/EventRowDynamicComponent'; | ||||
| 
 | ||||
| type EventRowCalendarEventProps = EventRowDynamicComponentProps; | ||||
| 
 | ||||
| @@ -1,8 +1,8 @@ | ||||
| import { Meta, StoryObj } from '@storybook/react'; | ||||
| import { graphql, HttpResponse } from 'msw'; | ||||
| import { HttpResponse, graphql } from 'msw'; | ||||
| 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 { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator'; | ||||
| 
 | ||||
| @@ -1,6 +1,6 @@ | ||||
| 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'; | ||||
| 
 | ||||
| export const EventIconDynamicComponent = ({ | ||||
| @@ -1,10 +1,10 @@ | ||||
| import styled from '@emotion/styled'; | ||||
| 
 | ||||
| import { EventRowActivity } from '@/activities/timelineActivities/rows/activity/components/EventRowActivity'; | ||||
| import { EventRowCalendarEvent } from '@/activities/timelineActivities/rows/calendar/components/EventRowCalendarEvent'; | ||||
| import { EventRowMainObject } from '@/activities/timelineActivities/rows/main-object/components/EventRowMainObject'; | ||||
| import { EventRowMessage } from '@/activities/timelineActivities/rows/message/components/EventRowMessage'; | ||||
| import { TimelineActivity } from '@/activities/timelineActivities/types/TimelineActivity'; | ||||
| import { EventRowActivity } from '@/activities/timeline-activities/rows/activity/components/EventRowActivity'; | ||||
| import { EventRowCalendarEvent } from '@/activities/timeline-activities/rows/calendar/components/EventRowCalendarEvent'; | ||||
| import { EventRowMainObject } from '@/activities/timeline-activities/rows/main-object/components/EventRowMainObject'; | ||||
| import { EventRowMessage } from '@/activities/timeline-activities/rows/message/components/EventRowMessage'; | ||||
| import { TimelineActivity } from '@/activities/timeline-activities/types/TimelineActivity'; | ||||
| import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; | ||||
| import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; | ||||
| 
 | ||||
| @@ -1,8 +1,8 @@ | ||||
| import styled from '@emotion/styled'; | ||||
| 
 | ||||
| import { EventFieldDiffLabel } from '@/activities/timelineActivities/rows/main-object/components/EventFieldDiffLabel'; | ||||
| import { EventFieldDiffValue } from '@/activities/timelineActivities/rows/main-object/components/EventFieldDiffValue'; | ||||
| import { EventFieldDiffValueEffect } from '@/activities/timelineActivities/rows/main-object/components/EventFieldDiffValueEffect'; | ||||
| import { EventFieldDiffLabel } from '@/activities/timeline-activities/rows/main-object/components/EventFieldDiffLabel'; | ||||
| import { EventFieldDiffValue } from '@/activities/timeline-activities/rows/main-object/components/EventFieldDiffValue'; | ||||
| import { EventFieldDiffValueEffect } from '@/activities/timeline-activities/rows/main-object/components/EventFieldDiffValueEffect'; | ||||
| import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; | ||||
| import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; | ||||
| 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 { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; | ||||
| 
 | ||||
| @@ -1,11 +1,10 @@ | ||||
| import styled from '@emotion/styled'; | ||||
| 
 | ||||
| import { | ||||
|   EventRowDynamicComponentProps, | ||||
|   StyledEventRowItemAction, | ||||
|   StyledEventRowItemColumn, | ||||
| } from '@/activities/timelineActivities/rows/components/EventRowDynamicComponent'; | ||||
| import { EventRowMainObjectUpdated } from '@/activities/timelineActivities/rows/main-object/components/EventRowMainObjectUpdated'; | ||||
| } from '@/activities/timeline-activities/rows/components/EventRowDynamicComponent'; | ||||
| import { EventRowMainObjectUpdated } from '@/activities/timeline-activities/rows/main-object/components/EventRowMainObjectUpdated'; | ||||
| import styled from '@emotion/styled'; | ||||
| 
 | ||||
| type EventRowMainObjectProps = EventRowDynamicComponentProps; | ||||
| 
 | ||||
| @@ -1,14 +1,14 @@ | ||||
| import { useState } from 'react'; | ||||
| import styled from '@emotion/styled'; | ||||
| import { useState } from 'react'; | ||||
| 
 | ||||
| import { EventCard } from '@/activities/timelineActivities/rows/components/EventCard'; | ||||
| import { EventCardToggleButton } from '@/activities/timelineActivities/rows/components/EventCardToggleButton'; | ||||
| import { EventCard } from '@/activities/timeline-activities/rows/components/EventCard'; | ||||
| import { EventCardToggleButton } from '@/activities/timeline-activities/rows/components/EventCardToggleButton'; | ||||
| import { | ||||
|   StyledEventRowItemAction, | ||||
|   StyledEventRowItemColumn, | ||||
| } from '@/activities/timelineActivities/rows/components/EventRowDynamicComponent'; | ||||
| import { EventFieldDiffContainer } from '@/activities/timelineActivities/rows/main-object/components/EventFieldDiffContainer'; | ||||
| import { TimelineActivity } from '@/activities/timelineActivities/types/TimelineActivity'; | ||||
| } from '@/activities/timeline-activities/rows/components/EventRowDynamicComponent'; | ||||
| import { EventFieldDiffContainer } from '@/activities/timeline-activities/rows/main-object/components/EventFieldDiffContainer'; | ||||
| import { TimelineActivity } from '@/activities/timeline-activities/types/TimelineActivity'; | ||||
| import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; | ||||
| 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 { 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 { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator'; | ||||
| import { generatedMockObjectMetadataItems } from '~/testing/mock-data/generatedMockObjectMetadataItems'; | ||||
| @@ -4,7 +4,7 @@ import { OverflowingTextWithTooltip } from 'twenty-ui'; | ||||
| 
 | ||||
| import { useEmailThread } from '@/activities/emails/hooks/useEmailThread'; | ||||
| 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 { useFindOneRecord } from '@/object-record/hooks/useFindOneRecord'; | ||||
| import { useUpsertRecordsInStore } from '@/object-record/record-store/hooks/useUpsertRecordsInStore'; | ||||
| @@ -1,14 +1,14 @@ | ||||
| import { useState } from 'react'; | ||||
| import styled from '@emotion/styled'; | ||||
| import { useState } from 'react'; | ||||
| 
 | ||||
| import { EventCard } from '@/activities/timelineActivities/rows/components/EventCard'; | ||||
| import { EventCardToggleButton } from '@/activities/timelineActivities/rows/components/EventCardToggleButton'; | ||||
| import { EventCard } from '@/activities/timeline-activities/rows/components/EventCard'; | ||||
| import { EventCardToggleButton } from '@/activities/timeline-activities/rows/components/EventCardToggleButton'; | ||||
| import { | ||||
|   EventRowDynamicComponentProps, | ||||
|   StyledEventRowItemAction, | ||||
|   StyledEventRowItemColumn, | ||||
| } from '@/activities/timelineActivities/rows/components/EventRowDynamicComponent'; | ||||
| import { EventCardMessage } from '@/activities/timelineActivities/rows/message/components/EventCardMessage'; | ||||
| } from '@/activities/timeline-activities/rows/components/EventRowDynamicComponent'; | ||||
| import { EventCardMessage } from '@/activities/timeline-activities/rows/message/components/EventCardMessage'; | ||||
| 
 | ||||
| type EventRowMessageProps = EventRowDynamicComponentProps; | ||||
| 
 | ||||
| @@ -1,9 +1,9 @@ | ||||
| import { Meta, StoryObj } from '@storybook/react'; | ||||
| import { graphql, HttpResponse } from 'msw'; | ||||
| import { HttpResponse, graphql } from 'msw'; | ||||
| import { ComponentDecorator } from 'twenty-ui'; | ||||
| 
 | ||||
| import { TimelineActivityContext } from '@/activities/timelineActivities/contexts/TimelineActivityContext'; | ||||
| import { EventCardMessage } from '@/activities/timelineActivities/rows/message/components/EventCardMessage'; | ||||
| import { TimelineActivityContext } from '@/activities/timeline-activities/contexts/TimelineActivityContext'; | ||||
| import { EventCardMessage } from '@/activities/timeline-activities/rows/message/components/EventCardMessage'; | ||||
| import { ObjectMetadataItemsDecorator } from '~/testing/decorators/ObjectMetadataItemsDecorator'; | ||||
| import { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator'; | ||||
| 
 | ||||
| @@ -1,5 +1,5 @@ | ||||
| import { TimelineActivity } from '@/activities/timelineActivities/types/TimelineActivity'; | ||||
| import { filterOutInvalidTimelineActivities } from '@/activities/timelineActivities/utils/filterOutInvalidTimelineActivities'; | ||||
| import { TimelineActivity } from '@/activities/timeline-activities/types/TimelineActivity'; | ||||
| import { filterOutInvalidTimelineActivities } from '@/activities/timeline-activities/utils/filterOutInvalidTimelineActivities'; | ||||
| import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; | ||||
| import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; | ||||
| 
 | ||||
| @@ -1,5 +1,5 @@ | ||||
| import { TimelineActivity } from '@/activities/timelineActivities/types/TimelineActivity'; | ||||
| import { getTimelineActivityAuthorFullName } from '@/activities/timelineActivities/utils/getTimelineActivityAuthorFullName'; | ||||
| import { TimelineActivity } from '@/activities/timeline-activities/types/TimelineActivity'; | ||||
| import { getTimelineActivityAuthorFullName } from '@/activities/timeline-activities/utils/getTimelineActivityAuthorFullName'; | ||||
| import { CurrentWorkspaceMember } from '@/auth/states/currentWorkspaceMemberState'; | ||||
| 
 | ||||
| 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 { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; | ||||
| 
 | ||||
| @@ -1,5 +1,5 @@ | ||||
| import { TimelineActivity } from '@/activities/timelineActivities/types/TimelineActivity'; | ||||
| import { TimelineActivityLinkedObject } from '@/activities/timelineActivities/types/TimelineActivityLinkedObject'; | ||||
| import { TimelineActivity } from '@/activities/timeline-activities/types/TimelineActivity'; | ||||
| import { TimelineActivityLinkedObject } from '@/activities/timeline-activities/types/TimelineActivityLinkedObject'; | ||||
| 
 | ||||
| export const filterTimelineActivityByLinkedObjectTypes = | ||||
|   (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 { 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'; | ||||
| 
 | ||||
| export type EventGroup = { | ||||
| @@ -18,7 +18,7 @@ import { logDebug } from '~/utils/logDebug'; | ||||
|  | ||||
| import { GraphQLFormattedError } from 'graphql'; | ||||
| import { ApolloManager } from '../types/apolloManager.interface'; | ||||
| import { loggerLink } from '../utils'; | ||||
| import { loggerLink } from '../utils/loggerLink'; | ||||
|  | ||||
| const logger = loggerLink(() => 'Twenty'); | ||||
|  | ||||
|   | ||||
| @@ -2,7 +2,7 @@ import { expect } from '@storybook/test'; | ||||
| 
 | ||||
| import { OperationType } from '@/apollo/types/operation-type'; | ||||
| 
 | ||||
| import formatTitle from '../format-title'; | ||||
| import formatTitle from '../formatTitle'; | ||||
| 
 | ||||
| describe('formatTitle', () => { | ||||
|   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 { logError } from '~/utils/logError'; | ||||
| 
 | ||||
| import formatTitle from './format-title'; | ||||
| import formatTitle from './formatTitle'; | ||||
| 
 | ||||
| const getGroup = (collapsed: boolean) => | ||||
|   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 { useIsFeatureEnabled } from '@/workspace/hooks/useIsFeatureEnabled'; | ||||
| import { RouterProvider } from 'react-router-dom'; | ||||
| @@ -17,7 +17,7 @@ export const AppRouter = () => { | ||||
|  | ||||
|   return ( | ||||
|     <RouterProvider | ||||
|       router={createAppRouter( | ||||
|       router={useCreateAppRouter( | ||||
|         isBillingPageEnabled, | ||||
|         isCRMMigrationEnabled, | ||||
|         isServerlessFunctionSettingsEnabled, | ||||
|   | ||||
| @@ -15,7 +15,7 @@ import { DialogManager } from '@/ui/feedback/dialog-manager/components/DialogMan | ||||
| import { DialogManagerScope } from '@/ui/feedback/dialog-manager/scopes/DialogManagerScope'; | ||||
| import { SnackBarProvider } from '@/ui/feedback/snack-bar-manager/components/SnackBarProvider'; | ||||
| 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 { UserProviderEffect } from '@/users/components/UserProviderEffect'; | ||||
| import { StrictMode } from 'react'; | ||||
|   | ||||
| @@ -3,8 +3,8 @@ import { SettingsRoutes } from '@/app/components/SettingsRoutes'; | ||||
| import { VerifyEffect } from '@/auth/components/VerifyEffect'; | ||||
| import indexAppPath from '@/navigation/utils/indexAppPath'; | ||||
| import { AppPath } from '@/types/AppPath'; | ||||
| import { BlankLayout } from '@/ui/layout/page/BlankLayout'; | ||||
| import { DefaultLayout } from '@/ui/layout/page/DefaultLayout'; | ||||
| import { BlankLayout } from '@/ui/layout/page/components/BlankLayout'; | ||||
| import { DefaultLayout } from '@/ui/layout/page/components/DefaultLayout'; | ||||
| import { | ||||
|   createBrowserRouter, | ||||
|   createRoutesFromElements, | ||||
| @@ -25,7 +25,7 @@ import { InviteTeam } from '~/pages/onboarding/InviteTeam'; | ||||
| import { PaymentSuccess } from '~/pages/onboarding/PaymentSuccess'; | ||||
| import { SyncEmails } from '~/pages/onboarding/SyncEmails'; | ||||
| 
 | ||||
| export const createAppRouter = ( | ||||
| export const useCreateAppRouter = ( | ||||
|   isBillingEnabled?: boolean, | ||||
|   isCRMMigrationEnabled?: boolean, | ||||
|   isServerlessFunctionSettingsEnabled?: boolean, | ||||
| @@ -6,7 +6,7 @@ import { | ||||
|   UriFunction, | ||||
| } from '@apollo/client'; | ||||
|  | ||||
| import { loggerLink } from '@/apollo/utils'; | ||||
| import { loggerLink } from '@/apollo/utils/loggerLink'; | ||||
| import { | ||||
|   AuthTokenPair, | ||||
|   RenewTokenDocument, | ||||
|   | ||||
| @@ -16,7 +16,7 @@ import { getCompanyDomainName } from '@/object-metadata/utils/getCompanyDomainNa | ||||
| import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords'; | ||||
| import { useSearchRecords } from '@/object-record/hooks/useSearchRecords'; | ||||
| 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 { LightIconButton } from '@/ui/input/button/components/LightIconButton'; | ||||
| import { SelectableItem } from '@/ui/layout/selectable-list/components/SelectableItem'; | ||||
|   | ||||
| @@ -4,7 +4,7 @@ import { useRecoilValue } from 'recoil'; | ||||
|  | ||||
| import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState'; | ||||
| 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 { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem'; | ||||
| import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| import { useApolloFactory } from '@/apollo/hooks/useApolloFactory'; | ||||
| import { REACT_APP_SERVER_BASE_URL } from '~/config'; | ||||
|  | ||||
| import { ApolloMetadataClientContext } from '../context/ApolloClientMetadataContext'; | ||||
| import { ApolloMetadataClientContext } from '../contexts/ApolloClientMetadataContext'; | ||||
|  | ||||
| export const ApolloMetadataClientProvider = ({ | ||||
|   children, | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| import React, { useMemo } from 'react'; | ||||
| 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 { getRecordChipGenerators } from '@/object-record/utils/getRecordChipGenerators'; | ||||
|  | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| import { ReactNode } from 'react'; | ||||
|  | ||||
| import { ApolloMetadataClientContext } from '@/object-metadata/context/ApolloClientMetadataContext'; | ||||
| import { ApolloMetadataClientContext } from '@/object-metadata/contexts/ApolloClientMetadataContext'; | ||||
| import { mockedMetadataApolloClient } from '~/testing/mockedMetadataApolloClient'; | ||||
|  | ||||
| export const ApolloMetadataClientMockedProvider = ({ | ||||
|   | ||||
| @@ -1,7 +1,6 @@ | ||||
| import { useContext } from 'react'; | ||||
| import { ApolloMetadataClientContext } from '@/object-metadata/contexts/ApolloClientMetadataContext'; | ||||
| import { useApolloClient } from '@apollo/client'; | ||||
|  | ||||
| import { ApolloMetadataClientContext } from '../context/ApolloClientMetadataContext'; | ||||
| import { useContext } from 'react'; | ||||
|  | ||||
| export const useApolloMetadataClient = () => { | ||||
|   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 { ObjectRecord } from '@/object-record/types/ObjectRecord'; | ||||
| 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