From 81c4939812f86df3aa2f0cef3a046b5d7fc386d1 Mon Sep 17 00:00:00 2001 From: Weiko Date: Thu, 13 Jun 2024 15:22:15 +0200 Subject: [PATCH] Fix timeline activity missing updated fields (#5854) ## Before Screenshot 2024-06-13 at 14 48 05 ## After Screenshot 2024-06-13 at 14 48 14 --- .../components/EventUpdateProperty.tsx | 32 ------------------- .../main-object/components/EventFieldDiff.tsx | 31 ++++++++++-------- .../components/EventFieldDiffValueEffect.tsx | 10 ++++-- .../timeline-activity.repository.ts | 11 +++++++ 4 files changed, 35 insertions(+), 49 deletions(-) delete mode 100644 packages/twenty-front/src/modules/activities/timelineActivities/components/EventUpdateProperty.tsx diff --git a/packages/twenty-front/src/modules/activities/timelineActivities/components/EventUpdateProperty.tsx b/packages/twenty-front/src/modules/activities/timelineActivities/components/EventUpdateProperty.tsx deleted file mode 100644 index 46f4061db..000000000 --- a/packages/twenty-front/src/modules/activities/timelineActivities/components/EventUpdateProperty.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import { useTheme } from '@emotion/react'; -import styled from '@emotion/styled'; -import { IconArrowRight } from 'twenty-ui'; - -type EventUpdatePropertyProps = { - propertyName: string; - before?: string; - after?: string; -}; - -const StyledContainer = styled.div` - display: flex; - margin-right: ${({ theme }) => theme.spacing(1)}; - gap: ${({ theme }) => theme.spacing(1)}; - white-space: nowrap; -`; - -const StyledPropertyName = styled.div``; - -export const EventUpdateProperty = ({ - propertyName, - after, -}: EventUpdatePropertyProps) => { - const theme = useTheme(); - return ( - - {propertyName ?? '(empty)'} - - {JSON.stringify(after)} - - ); -}; diff --git a/packages/twenty-front/src/modules/activities/timelineActivities/rows/main-object/components/EventFieldDiff.tsx b/packages/twenty-front/src/modules/activities/timelineActivities/rows/main-object/components/EventFieldDiff.tsx index 108f38562..1cebf7e5e 100644 --- a/packages/twenty-front/src/modules/activities/timelineActivities/rows/main-object/components/EventFieldDiff.tsx +++ b/packages/twenty-front/src/modules/activities/timelineActivities/rows/main-object/components/EventFieldDiff.tsx @@ -5,6 +5,7 @@ import { EventFieldDiffValue } from '@/activities/timelineActivities/rows/main-o import { EventFieldDiffValueEffect } from '@/activities/timelineActivities/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'; type EventFieldDiffProps = { diffRecord: Record; @@ -33,19 +34,21 @@ export const EventFieldDiff = ({ } return ( - - → - - - + + + → + + + + ); }; diff --git a/packages/twenty-front/src/modules/activities/timelineActivities/rows/main-object/components/EventFieldDiffValueEffect.tsx b/packages/twenty-front/src/modules/activities/timelineActivities/rows/main-object/components/EventFieldDiffValueEffect.tsx index 04908f71c..f07a2fc73 100644 --- a/packages/twenty-front/src/modules/activities/timelineActivities/rows/main-object/components/EventFieldDiffValueEffect.tsx +++ b/packages/twenty-front/src/modules/activities/timelineActivities/rows/main-object/components/EventFieldDiffValueEffect.tsx @@ -3,6 +3,7 @@ import { useSetRecoilState } from 'recoil'; import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem'; +import { useSetRecordValue } from '@/object-record/record-store/contexts/RecordFieldValueSelectorContext'; import { recordStoreFamilyState } from '@/object-record/record-store/states/recordStoreFamilyState'; export const EventFieldDiffValueEffect = ({ @@ -16,9 +17,10 @@ export const EventFieldDiffValueEffect = ({ mainObjectMetadataItem: ObjectMetadataItem; fieldMetadataItem: FieldMetadataItem; }) => { - const setEntityFields = useSetRecoilState( + const setEntity = useSetRecoilState( recordStoreFamilyState(diffArtificialRecordStoreId), ); + const setRecordValue = useSetRecordValue(); useEffect(() => { if (!diffRecord) return; @@ -29,13 +31,15 @@ export const EventFieldDiffValueEffect = ({ [fieldMetadataItem.name]: diffRecord, }; - setEntityFields(forgedObjectRecord); + setEntity(forgedObjectRecord); + setRecordValue(forgedObjectRecord.id, forgedObjectRecord); }, [ diffRecord, diffArtificialRecordStoreId, fieldMetadataItem.name, mainObjectMetadataItem.nameSingular, - setEntityFields, + setEntity, + setRecordValue, ]); return <>; diff --git a/packages/twenty-server/src/modules/timeline/repositiories/timeline-activity.repository.ts b/packages/twenty-server/src/modules/timeline/repositiories/timeline-activity.repository.ts index 6d6cc30c2..8d9a99c7d 100644 --- a/packages/twenty-server/src/modules/timeline/repositiories/timeline-activity.repository.ts +++ b/packages/twenty-server/src/modules/timeline/repositiories/timeline-activity.repository.ts @@ -35,6 +35,17 @@ export class TimelineActivityRepository { workspaceId, ); + // If the diff is empty, we don't need to insert or update an activity + // this should be handled differently, events should not be triggered when we will use proper DB events. + const isDiffEmpty = + properties.diff !== null && + properties.diff && + Object.keys(properties.diff).length === 0; + + if (isDiffEmpty) { + return; + } + if (recentTimelineActivity.length !== 0) { const newProps = objectRecordDiffMerge( recentTimelineActivity[0].properties,