From 0c56989cb145322c1bb27466050d00eae9c687b6 Mon Sep 17 00:00:00 2001 From: Charles Bochet Date: Fri, 24 Nov 2023 17:33:08 +0100 Subject: [PATCH] Disable activities creation for custom objects --- .../components/ActivityBodyEditor.tsx | 3 +- .../activities/notes/components/Notes.tsx | 2 +- .../tasks/components/TaskGroups.tsx | 4 ++ .../activities/tasks/components/TaskRow.tsx | 4 +- .../timeline/components/Timeline.tsx | 2 +- .../types/ActivityTargetableEntity.ts | 2 +- .../components/RecordShowPage.tsx | 2 +- .../useRecordTableContextMenuEntries.tsx | 48 ++++++++----------- .../components/ShowPageRightContainer.tsx | 3 ++ .../SettingsObjectNewFieldStep2.tsx | 1 + 10 files changed, 36 insertions(+), 35 deletions(-) diff --git a/front/src/modules/activities/components/ActivityBodyEditor.tsx b/front/src/modules/activities/components/ActivityBodyEditor.tsx index 047192f8e..6db62637a 100644 --- a/front/src/modules/activities/components/ActivityBodyEditor.tsx +++ b/front/src/modules/activities/components/ActivityBodyEditor.tsx @@ -47,7 +47,8 @@ export const ActivityBodyEditor = ({ }, [updateOneObject, activity.id]); const editor: BlockNoteEditor | null = useBlockNote({ - initialContent: activity.body ? JSON.parse(activity.body) : undefined, + initialContent: + activity.body !== '{}' ? JSON.parse(activity.body) : undefined, editorDOMAttributes: { class: 'editor' }, onEditorContentChange: (editor) => { debounceOnChange(JSON.stringify(editor.topLevelBlocks) ?? ''); diff --git a/front/src/modules/activities/notes/components/Notes.tsx b/front/src/modules/activities/notes/components/Notes.tsx index 8bdbb2218..800abcb88 100644 --- a/front/src/modules/activities/notes/components/Notes.tsx +++ b/front/src/modules/activities/notes/components/Notes.tsx @@ -49,7 +49,7 @@ export const Notes = ({ entity }: { entity: ActivityTargetableEntity }) => { const openCreateActivity = useOpenCreateActivityDrawer(); - if (notes?.length === 0) { + if (notes?.length === 0 && entity.type !== 'Custom') { return ( No note yet diff --git a/front/src/modules/activities/tasks/components/TaskGroups.tsx b/front/src/modules/activities/tasks/components/TaskGroups.tsx index 012e45fa7..c759e0221 100644 --- a/front/src/modules/activities/tasks/components/TaskGroups.tsx +++ b/front/src/modules/activities/tasks/components/TaskGroups.tsx @@ -66,6 +66,10 @@ export const TaskGroups = ({ entity, showAddButton }: TaskGroupsProps) => { TasksRecoilScopeContext, ); + if (entity?.type === 'Custom') { + return <>; + } + if ( (activeTabId !== 'done' && todayOrPreviousTasks?.length === 0 && diff --git a/front/src/modules/activities/tasks/components/TaskRow.tsx b/front/src/modules/activities/tasks/components/TaskRow.tsx index 4c6af3057..feacc3d5d 100644 --- a/front/src/modules/activities/tasks/components/TaskRow.tsx +++ b/front/src/modules/activities/tasks/components/TaskRow.tsx @@ -1,6 +1,5 @@ import { useTheme } from '@emotion/react'; import styled from '@emotion/styled'; -import { isNonEmptyString } from '@sniptt/guards'; import { ActivityTargetChips } from '@/activities/components/ActivityTargetChips'; import { useOpenActivityRightDrawer } from '@/activities/hooks/useOpenActivityRightDrawer'; @@ -72,8 +71,7 @@ export const TaskRow = ({ const theme = useTheme(); const openActivityRightDrawer = useOpenActivityRightDrawer(); - const body = JSON.parse(isNonEmptyString(task.body) ? task.body : '{}')[0] - ?.content[0]?.text; + const body = JSON.parse(task.body)[0]?.content[0]?.text; const { completeTask } = useCompleteTask(task); const activityTargetIds = diff --git a/front/src/modules/activities/timeline/components/Timeline.tsx b/front/src/modules/activities/timeline/components/Timeline.tsx index 3daa5d3c5..2c67802f0 100644 --- a/front/src/modules/activities/timeline/components/Timeline.tsx +++ b/front/src/modules/activities/timeline/components/Timeline.tsx @@ -70,7 +70,7 @@ export const Timeline = ({ entity }: { entity: ActivityTargetableEntity }) => { const openCreateActivity = useOpenCreateActivityDrawer(); - if (loading) { + if (loading || entity.type === 'Custom') { return <>; } diff --git a/front/src/modules/activities/types/ActivityTargetableEntity.ts b/front/src/modules/activities/types/ActivityTargetableEntity.ts index f9299426b..f474d9ac6 100644 --- a/front/src/modules/activities/types/ActivityTargetableEntity.ts +++ b/front/src/modules/activities/types/ActivityTargetableEntity.ts @@ -1,4 +1,4 @@ -export type ActivityTargetableEntityType = 'Person' | 'Company'; +export type ActivityTargetableEntityType = 'Person' | 'Company' | 'Custom'; export type ActivityTargetableEntity = { id: string; diff --git a/front/src/modules/object-record/components/RecordShowPage.tsx b/front/src/modules/object-record/components/RecordShowPage.tsx index 63e648250..619047823 100644 --- a/front/src/modules/object-record/components/RecordShowPage.tsx +++ b/front/src/modules/object-record/components/RecordShowPage.tsx @@ -238,7 +238,7 @@ export const RecordShowPage = () => { ? 'Company' : objectMetadataItem?.nameSingular === 'person' ? 'Person' - : 'Person', + : 'Custom', }} timeline tasks diff --git a/front/src/modules/object-record/hooks/useRecordTableContextMenuEntries.tsx b/front/src/modules/object-record/hooks/useRecordTableContextMenuEntries.tsx index fbd04c1c5..62aa13b96 100644 --- a/front/src/modules/object-record/hooks/useRecordTableContextMenuEntries.tsx +++ b/front/src/modules/object-record/hooks/useRecordTableContextMenuEntries.tsx @@ -5,13 +5,7 @@ import { useRecoilCallback, useRecoilValue, useSetRecoilState } from 'recoil'; import { useFavorites } from '@/favorites/hooks/useFavorites'; import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem'; import { useDeleteOneObjectRecord } from '@/object-record/hooks/useDeleteOneObjectRecord'; -import { - IconCheckbox, - IconHeart, - IconHeartOff, - IconNotes, - IconTrash, -} from '@/ui/display/icon'; +import { IconHeart, IconHeartOff, IconTrash } from '@/ui/display/icon'; import { actionBarEntriesState } from '@/ui/navigation/action-bar/states/actionBarEntriesState'; import { contextMenuEntriesState } from '@/ui/navigation/context-menu/states/contextMenuEntriesState'; import { useRecordTable } from '@/ui/object/record-table/hooks/useRecordTable'; @@ -91,16 +85,16 @@ export const useRecordTableContextMenuEntries = () => { !!favorites?.find((favorite) => favorite.recordId === selectedRowId); const contextMenuEntries = [ - { - label: 'New task', - Icon: IconCheckbox, - onClick: () => {}, - }, - { - label: 'New note', - Icon: IconNotes, - onClick: () => {}, - }, + // { + // label: 'New task', + // Icon: IconCheckbox, + // onClick: () => {}, + // }, + // { + // label: 'New note', + // Icon: IconNotes, + // onClick: () => {}, + // }, { label: isFavorite ? 'Remove from favorites' : 'Add to favorites', Icon: isFavorite ? IconHeartOff : IconHeart, @@ -129,16 +123,16 @@ export const useRecordTableContextMenuEntries = () => { setActionBarEntries: useRecoilCallback(() => () => { setActionBarEntriesState([ - { - label: 'Task', - Icon: IconCheckbox, - onClick: () => {}, - }, - { - label: 'Note', - Icon: IconNotes, - onClick: () => {}, - }, + // { + // label: 'Task', + // Icon: IconCheckbox, + // onClick: () => {}, + // }, + // { + // label: 'Note', + // Icon: IconNotes, + // onClick: () => {}, + // }, { label: 'Delete', Icon: IconTrash, diff --git a/front/src/modules/ui/layout/show-page/components/ShowPageRightContainer.tsx b/front/src/modules/ui/layout/show-page/components/ShowPageRightContainer.tsx index 4914dda97..129f4162f 100644 --- a/front/src/modules/ui/layout/show-page/components/ShowPageRightContainer.tsx +++ b/front/src/modules/ui/layout/show-page/components/ShowPageRightContainer.tsx @@ -56,18 +56,21 @@ export const ShowPageRightContainer = ({ title: 'Timeline', Icon: IconTimelineEvent, hide: !timeline, + disabled: entity.type === 'Custom', }, { id: 'tasks', title: 'Tasks', Icon: IconCheckbox, hide: !tasks, + disabled: entity.type === 'Custom', }, { id: 'notes', title: 'Notes', Icon: IconNotes, hide: !notes, + disabled: entity.type === 'Custom', }, { id: 'emails', diff --git a/front/src/pages/settings/data-model/SettingsObjectNewField/SettingsObjectNewFieldStep2.tsx b/front/src/pages/settings/data-model/SettingsObjectNewField/SettingsObjectNewFieldStep2.tsx index 113fa1614..ef63d3d69 100644 --- a/front/src/pages/settings/data-model/SettingsObjectNewField/SettingsObjectNewFieldStep2.tsx +++ b/front/src/pages/settings/data-model/SettingsObjectNewField/SettingsObjectNewFieldStep2.tsx @@ -198,6 +198,7 @@ export const SettingsObjectNewFieldStep2 = () => { FieldMetadataType.Currency, FieldMetadataType.Email, FieldMetadataType.Enum, + FieldMetadataType.Numeric, FieldMetadataType.FullName, FieldMetadataType.Link, FieldMetadataType.Phone,