Activity as standard object (#6219)
In this PR I layout the first steps to migrate Activity to a traditional Standard objects Since this is a big transition, I'd rather split it into several deployments / PRs <img width="1512" alt="image" src="https://github.com/user-attachments/assets/012e2bbf-9d1b-4723-aaf6-269ef588b050"> --------- Co-authored-by: Charles Bochet <charles@twenty.com> Co-authored-by: bosiraphael <71827178+bosiraphael@users.noreply.github.com> Co-authored-by: Weiko <corentin@twenty.com> Co-authored-by: Faisal-imtiyaz123 <142205282+Faisal-imtiyaz123@users.noreply.github.com> Co-authored-by: Prateek Jain <prateekj1171998@gmail.com>
This commit is contained in:
@ -1,4 +1,6 @@
|
||||
export const getActivityPreview = (activityBody: string) => {
|
||||
// TODO: merge with getFirstNonEmptyLineOfRichText (and one duplicate I saw and also added a note on)
|
||||
|
||||
export const getActivityPreview = (activityBody: string | null) => {
|
||||
const noteBody = activityBody ? JSON.parse(activityBody) : [];
|
||||
|
||||
return noteBody.length
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
import { isArray, isNonEmptyString } from '@sniptt/guards';
|
||||
|
||||
export const getActivitySummary = (activityBody: string) => {
|
||||
// TODO: merge with getFirstNonEmptyLineOfRichText
|
||||
export const getActivitySummary = (activityBody: string | null) => {
|
||||
const noteBody = activityBody ? JSON.parse(activityBody) : [];
|
||||
|
||||
if (!noteBody.length) {
|
||||
|
||||
@ -1,8 +1,10 @@
|
||||
import { v4 } from 'uuid';
|
||||
|
||||
import { Activity } from '@/activities/types/Activity';
|
||||
import { ActivityTarget } from '@/activities/types/ActivityTarget';
|
||||
import { ActivityTargetableObject } from '@/activities/types/ActivityTargetableEntity';
|
||||
import { Note } from '@/activities/types/Note';
|
||||
import { NoteTarget } from '@/activities/types/NoteTarget';
|
||||
import { Task } from '@/activities/types/Task';
|
||||
import { TaskTarget } from '@/activities/types/TaskTarget';
|
||||
import { getActivityTargetObjectFieldIdName } from '@/activities/utils/getActivityTargetObjectFieldIdName';
|
||||
import { ObjectRecord } from '@/object-record/types/ObjectRecord';
|
||||
|
||||
@ -12,9 +14,9 @@ export const makeActivityTargetsToCreateFromTargetableObjects = ({
|
||||
targetObjectRecords,
|
||||
}: {
|
||||
targetableObjects: ActivityTargetableObject[];
|
||||
activity: Activity;
|
||||
activity: Task | Note;
|
||||
targetObjectRecords: ObjectRecord[];
|
||||
}): Partial<ActivityTarget>[] => {
|
||||
}): Partial<NoteTarget | TaskTarget>[] => {
|
||||
const activityTargetsToCreate = targetableObjects.map((targetableObject) => {
|
||||
const targetableObjectFieldIdName = getActivityTargetObjectFieldIdName({
|
||||
nameSingular: targetableObject.targetObjectNameSingular,
|
||||
@ -32,7 +34,7 @@ export const makeActivityTargetsToCreateFromTargetableObjects = ({
|
||||
id: v4(),
|
||||
updatedAt: new Date().toISOString(),
|
||||
createdAt: new Date().toISOString(),
|
||||
} as Partial<ActivityTarget>;
|
||||
} as Partial<NoteTarget | TaskTarget>;
|
||||
|
||||
return activityTarget;
|
||||
});
|
||||
|
||||
@ -0,0 +1,11 @@
|
||||
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
|
||||
|
||||
export const getJoinObjectNameSingular = (
|
||||
objectNameSingular: CoreObjectNameSingular,
|
||||
) => {
|
||||
return objectNameSingular === CoreObjectNameSingular.Note
|
||||
? CoreObjectNameSingular.NoteTarget
|
||||
: objectNameSingular === CoreObjectNameSingular.Task
|
||||
? CoreObjectNameSingular.TaskTarget
|
||||
: '';
|
||||
};
|
||||
Reference in New Issue
Block a user