Fixes #5276. Updates were not triggering a cache version incrementation because they do not trigger migrations while that is where the caching version logic was. We have decided to move the cache incrementation logic to the services.
47 lines
1.4 KiB
TypeScript
47 lines
1.4 KiB
TypeScript
import { useMutation } from '@apollo/client';
|
|
import { getOperationName } from '@apollo/client/utilities';
|
|
|
|
import {
|
|
UpdateOneObjectInput,
|
|
UpdateOneObjectMetadataItemMutation,
|
|
UpdateOneObjectMetadataItemMutationVariables,
|
|
} from '~/generated-metadata/graphql';
|
|
|
|
import { UPDATE_ONE_OBJECT_METADATA_ITEM } from '../graphql/mutations';
|
|
import { FIND_MANY_OBJECT_METADATA_ITEMS } from '../graphql/queries';
|
|
|
|
import { useApolloMetadataClient } from './useApolloMetadataClient';
|
|
|
|
// TODO: Slice the Apollo store synchronously in the update function instead of subscribing, so we can use update after read in the same function call
|
|
export const useUpdateOneObjectMetadataItem = () => {
|
|
const apolloClientMetadata = useApolloMetadataClient();
|
|
|
|
const [mutate] = useMutation<
|
|
UpdateOneObjectMetadataItemMutation,
|
|
UpdateOneObjectMetadataItemMutationVariables
|
|
>(UPDATE_ONE_OBJECT_METADATA_ITEM, {
|
|
client: apolloClientMetadata ?? undefined,
|
|
});
|
|
|
|
const updateOneObjectMetadataItem = async ({
|
|
idToUpdate,
|
|
updatePayload,
|
|
}: {
|
|
idToUpdate: UpdateOneObjectInput['id'];
|
|
updatePayload: UpdateOneObjectInput['update'];
|
|
}) => {
|
|
return await mutate({
|
|
variables: {
|
|
idToUpdate,
|
|
updatePayload,
|
|
},
|
|
awaitRefetchQueries: true,
|
|
refetchQueries: [getOperationName(FIND_MANY_OBJECT_METADATA_ITEMS) ?? ''],
|
|
});
|
|
};
|
|
|
|
return {
|
|
updateOneObjectMetadataItem,
|
|
};
|
|
};
|