* Fix naming * Fixed cache.evict bug for relation target deletion * Fixed cascade delete activity targets * Working version * Fix * fix * WIP * Fixed optimistic effect target inline cell * Removed openCreateActivityDrawer v1 * Ok for timeline * Removed console.log * Fix update record optimistic effect * Refactored activity queries into useActivities for everything * Fixed bugs * Cleaned * Fix lint --------- Co-authored-by: Charles Bochet <charles@twenty.com>
50 lines
1.7 KiB
TypeScript
50 lines
1.7 KiB
TypeScript
import { useState } from 'react';
|
|
import { isNonEmptyString } from '@sniptt/guards';
|
|
|
|
import { ActivityTarget } from '@/activities/types/ActivityTarget';
|
|
import { ActivityTargetableObject } from '@/activities/types/ActivityTargetableEntity';
|
|
import { getActivityTargetObjectFieldIdName } from '@/activities/utils/getTargetObjectFilterFieldName';
|
|
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
|
|
import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords';
|
|
|
|
export const useActivityTargetsForTargetableObject = ({
|
|
targetableObject,
|
|
}: {
|
|
targetableObject: ActivityTargetableObject;
|
|
}) => {
|
|
const targetObjectFieldName = getActivityTargetObjectFieldIdName({
|
|
nameSingular: targetableObject.targetObjectNameSingular,
|
|
});
|
|
|
|
const [initialized, setInitialized] = useState(false);
|
|
|
|
const targetableObjectId = targetableObject.id;
|
|
|
|
const skipRequest = !isNonEmptyString(targetableObjectId);
|
|
|
|
// TODO: We want to optimistically remove from this request
|
|
// If we are on a show page and we remove the current show page object corresponding activity target
|
|
// See also if we need to update useTimelineActivities
|
|
const { records: activityTargets, loading: loadingActivityTargets } =
|
|
useFindManyRecords({
|
|
objectNameSingular: CoreObjectNameSingular.ActivityTarget,
|
|
skip: skipRequest,
|
|
filter: {
|
|
[targetObjectFieldName]: {
|
|
eq: targetableObject.id,
|
|
},
|
|
},
|
|
onCompleted: () => {
|
|
if (!initialized) {
|
|
setInitialized(true);
|
|
}
|
|
},
|
|
});
|
|
|
|
return {
|
|
activityTargets: activityTargets as ActivityTarget[],
|
|
loadingActivityTargets,
|
|
initialized,
|
|
};
|
|
};
|