diff options
Diffstat (limited to 'frontend/components/DeleteItem.js')
| -rw-r--r-- | frontend/components/DeleteItem.js | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/frontend/components/DeleteItem.js b/frontend/components/DeleteItem.js new file mode 100644 index 0000000..30b2bf7 --- /dev/null +++ b/frontend/components/DeleteItem.js @@ -0,0 +1,39 @@ +import React from 'react'; +import { Mutation } from 'react-apollo'; +import PropTypes from 'prop-types'; +import { REMOVE_ITEM_MUTATION, ALL_ITEMS_QUERY } from '../queries/index'; + +class DeleteItem extends React.Component { + static propTypes = { + id: PropTypes.string.isRequired, + }; + + update = (proxy, payload) => { + const deletedItem = payload.data.deleteItem; + const data = proxy.readQuery({ query: ALL_ITEMS_QUERY }); + // filter this one out + data.items = data.items.filter(item => item.id !== deletedItem.id); + // write the data back to the proxy + proxy.writeQuery({ query: ALL_ITEMS_QUERY, data }); + }; + + render() { + return ( + <Mutation mutation={REMOVE_ITEM_MUTATION} variables={{ id: this.props.id }} update={this.update}> + {removeItem => ( + <button + onClick={() => { + if (confirm('Are you sure you want to delete this item?')) { + removeItem(); + } + }} + > + × Delete item + </button> + )} + </Mutation> + ); + } +} + +export default DeleteItem; |
