UNPKG

@shopify/react-graphql

Version:

Tools for creating type-safe and asynchronous GraphQL components for React

43 lines (37 loc) 1.46 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var _rollupPluginBabelHelpers = require('../_virtual/_rollupPluginBabelHelpers.js'); var React = require('react'); var apolloClient = require('./apollo-client.js'); function useMutation(mutation, options = {}) { const { client: overrideClient, variables, optimisticResponse, refetchQueries, awaitRefetchQueries, update, context, fetchPolicy } = options; const client = apolloClient['default'](overrideClient); const runMutation = React.useCallback((perMutationOptions = {}) => { const mutateVariables = _rollupPluginBabelHelpers.objectSpread2(_rollupPluginBabelHelpers.objectSpread2({}, variables || {}), perMutationOptions.variables || {}); delete perMutationOptions.variables; return client.mutate(_rollupPluginBabelHelpers.objectSpread2({ mutation, variables: mutateVariables, optimisticResponse, refetchQueries, awaitRefetchQueries, update, context, fetchPolicy }, perMutationOptions)); }, // eslint-disable-next-line react-hooks/exhaustive-deps [client, mutation, refetchQueries, awaitRefetchQueries, update, context, fetchPolicy, // eslint-disable-next-line react-hooks/exhaustive-deps JSON.stringify(variables), // eslint-disable-next-line react-hooks/exhaustive-deps JSON.stringify(optimisticResponse)]); return runMutation; } exports.default = useMutation;