summaryrefslogtreecommitdiffstats
path: root/frontend/components/DeleteItem.js
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/components/DeleteItem.js')
-rw-r--r--frontend/components/DeleteItem.js39
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();
+ }
+ }}
+ >
+ &times; Delete item
+ </button>
+ )}
+ </Mutation>
+ );
+ }
+}
+
+export default DeleteItem;