diff options
| author | Wes Bos <wesbos@gmail.com> | 2018-03-22 16:29:31 -0400 |
|---|---|---|
| committer | Wes Bos <wesbos@gmail.com> | 2018-03-22 16:29:31 -0400 |
| commit | a6af043686e4375d7944e91cae3d5b63c59edab0 (patch) | |
| tree | f814d412b14a2a47f56c933ce38f458055f2f83b /frontend/components/RemoveFromCart.js | |
| parent | 93495ce146c4e81ecfab3a0bca99460e75a759da (diff) | |
Migrate to render props
Diffstat (limited to 'frontend/components/RemoveFromCart.js')
| -rw-r--r-- | frontend/components/RemoveFromCart.js | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/frontend/components/RemoveFromCart.js b/frontend/components/RemoveFromCart.js index 235ecce..d8c81b0 100644 --- a/frontend/components/RemoveFromCart.js +++ b/frontend/components/RemoveFromCart.js @@ -1,8 +1,8 @@ import { Component } from 'react'; -import { compose } from 'react-apollo'; +import { Mutation } from 'react-apollo'; import styled from 'styled-components'; import PropTypes from 'prop-types'; -import { removeFromCartEnhancer } from '../enhancers/enhancers'; +import { REMOVE_FROM_CART_MUTATION, CURRENT_USER_QUERY } from '../queries/index'; const BigButton = styled.button` font-size: 3rem; @@ -16,26 +16,27 @@ const BigButton = styled.button` class RemoveFromCart extends Component { static propTypes = { - removeFromCart: PropTypes.func.isRequired, id: PropTypes.string.isRequired, }; - handleRemoveFromCart = async () => { - await this.props.removeFromCart({ - variables: { - id: this.props.id, - }, - }); + update = (proxy, payload) => { + const data = proxy.readQuery({ query: CURRENT_USER_QUERY }); + const cartItemId = payload.data.removeFromCart.id; + data.me.cart = data.me.cart.filter(item => item.id !== cartItemId); + proxy.writeQuery({ query: CURRENT_USER_QUERY, data }); }; render() { return ( - <BigButton title="Remove From Cart" onClick={this.handleRemoveFromCart}> - × - </BigButton> + <Mutation mutation={REMOVE_FROM_CART_MUTATION} variables={{ id: this.props.id }} update={this.update}> + {removeFromCart => ( + <BigButton title="Remove From Cart" onClick={removeFromCart}> + × + </BigButton> + )} + </Mutation> ); } } -export default compose(removeFromCartEnhancer)(RemoveFromCart); -export { RemoveFromCart }; +export default RemoveFromCart; |
