- 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
52 lines
1.7 KiB
TypeScript
52 lines
1.7 KiB
TypeScript
import { useApolloClient } from '@apollo/client';
|
|
|
|
import { ActivityTarget } from '@/activities/types/ActivityTarget';
|
|
import { CachedObjectRecordConnection } from '@/apollo/types/CachedObjectRecordConnection';
|
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
|
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
|
|
import { useModifyRecordFromCache } from '@/object-record/cache/hooks/useModifyRecordFromCache';
|
|
import { getCachedRecordEdgesFromRecords } from '@/object-record/cache/utils/getCachedRecordEdgesFromRecords';
|
|
|
|
export const useModifyActivityTargetsOnActivityCache = () => {
|
|
const { objectMetadataItem: objectMetadataItemActivity } =
|
|
useObjectMetadataItem({
|
|
objectNameSingular: CoreObjectNameSingular.Activity,
|
|
});
|
|
|
|
const modifyActivityFromCache = useModifyRecordFromCache({
|
|
objectMetadataItem: objectMetadataItemActivity,
|
|
});
|
|
|
|
const apolloClient = useApolloClient();
|
|
|
|
const modifyActivityTargetsOnActivityCache = ({
|
|
activityId,
|
|
activityTargets,
|
|
}: {
|
|
activityId: string;
|
|
activityTargets: ActivityTarget[];
|
|
}) => {
|
|
modifyActivityFromCache(activityId, {
|
|
activityTargets: (
|
|
activityTargetsCachedConnection: CachedObjectRecordConnection,
|
|
) => {
|
|
const newActivityTargetsCachedRecordEdges =
|
|
getCachedRecordEdgesFromRecords({
|
|
apolloClient,
|
|
objectNameSingular: CoreObjectNameSingular.ActivityTarget,
|
|
records: activityTargets,
|
|
});
|
|
|
|
return {
|
|
...activityTargetsCachedConnection,
|
|
edges: newActivityTargetsCachedRecordEdges,
|
|
};
|
|
},
|
|
});
|
|
};
|
|
|
|
return {
|
|
modifyActivityTargetsOnActivityCache,
|
|
};
|
|
};
|