Activity injection into Apollo cache (#3665)
- Created addRecordInCache to inject a record in Apollo cache and inject single read query on this record - Created createOneRecordInCache and createManyRecordsInCache that uses this addRecordInCache - Created useOpenCreateActivityDrawerV2 hook to create an activity in cache and inject it into all other relevant requests in the app before opening activity drawer - Refactored DEFAULT_SEARCH_REQUEST_LIMIT constant and hardcoded arbitrary request limits - Added Apollo dev logs to see errors in the console when manipulating cache
This commit is contained in:
@ -0,0 +1,46 @@
|
||||
import { useApolloClient } from '@apollo/client';
|
||||
|
||||
import { Activity } from '@/activities/types/Activity';
|
||||
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
|
||||
import { useModifyRecordFromCache } from '@/object-record/cache/hooks/useModifyRecordFromCache';
|
||||
import { getCacheReferenceFromRecord } from '@/object-record/cache/utils/getCacheReferenceFromRecord';
|
||||
|
||||
export const useModifyActivityOnActivityTargetsCache = () => {
|
||||
const { objectMetadataItem: objectMetadataItemActivityTarget } =
|
||||
useObjectMetadataItem({
|
||||
objectNameSingular: CoreObjectNameSingular.ActivityTarget,
|
||||
});
|
||||
|
||||
const modifyActivityTargetFromCache = useModifyRecordFromCache({
|
||||
objectMetadataItem: objectMetadataItemActivityTarget,
|
||||
});
|
||||
|
||||
const apolloClient = useApolloClient();
|
||||
|
||||
const modifyActivityOnActivityTargetsCache = ({
|
||||
activityTargetIds,
|
||||
activity,
|
||||
}: {
|
||||
activityTargetIds: string[];
|
||||
activity: Activity;
|
||||
}) => {
|
||||
for (const activityTargetId of activityTargetIds) {
|
||||
modifyActivityTargetFromCache(activityTargetId, {
|
||||
activity: () => {
|
||||
const newActivityReference = getCacheReferenceFromRecord({
|
||||
apolloClient,
|
||||
objectNameSingular: CoreObjectNameSingular.Activity,
|
||||
record: activity,
|
||||
});
|
||||
|
||||
return newActivityReference;
|
||||
},
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
return {
|
||||
modifyActivityOnActivityTargetsCache,
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user