diff options
Diffstat (limited to 'frontend/components/AddToCart.js')
| -rw-r--r-- | frontend/components/AddToCart.js | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/frontend/components/AddToCart.js b/frontend/components/AddToCart.js index 105f558..c79e644 100644 --- a/frontend/components/AddToCart.js +++ b/frontend/components/AddToCart.js @@ -1,18 +1,23 @@ import { Component } from 'react'; import { Mutation, Query } from 'react-apollo'; import PropTypes from 'prop-types'; -import { ADD_TO_CART_MUTATION, CURRENT_USER_QUERY } from '../queries/queries.graphql'; +import { + ADD_TO_CART_MUTATION, + CURRENT_USER_QUERY, +} from '../queries/queries.graphql'; class AddToCart extends Component { static propTypes = { id: PropTypes.string.isRequired, }; - update = (proxy, payload) => { + update = (cache, payload) => { const newCartItem = payload.data.addToCart; - const data = proxy.readQuery({ query: CURRENT_USER_QUERY }); + const data = cache.readQuery({ query: CURRENT_USER_QUERY }); - const existingIndex = data.me.cart.findIndex(cartItem => cartItem.id === newCartItem.id); + const existingIndex = data.me.cart.findIndex( + cartItem => cartItem.id === newCartItem.id, + ); if (existingIndex >= 0) { // already in cache, just replace it data.me.cart = [ @@ -23,7 +28,7 @@ class AddToCart extends Component { } else { data.me.cart = [...data.me.cart, newCartItem]; } - proxy.writeQuery({ query: CURRENT_USER_QUERY, data }); + cache.writeQuery({ query: CURRENT_USER_QUERY, data }); }; render() { @@ -31,7 +36,11 @@ class AddToCart extends Component { return ( <Query query={CURRENT_USER_QUERY}> {() => ( - <Mutation mutation={ADD_TO_CART_MUTATION} variables={{ id }} update={this.update}> + <Mutation + mutation={ADD_TO_CART_MUTATION} + variables={{ id }} + update={this.update} + > {(addToCart, { loading }) => ( <button disabled={loading} onClick={addToCart}> 🛒 Add{loading && 'ing'} To Cart |
