summaryrefslogtreecommitdiffstats
path: root/stepped-solutions/38/frontend/components/DeleteItem.js
diff options
context:
space:
mode:
authorWes Bos <wesbos@gmail.com>2018-08-15 14:47:25 -0400
committerWes Bos <wesbos@gmail.com>2018-08-15 14:47:25 -0400
commit124f227a8235e08bddf8376e0b3d01d33c4414f3 (patch)
tree1ea23e539e42c35ca0b609e2615c043aa6fc4219 /stepped-solutions/38/frontend/components/DeleteItem.js
parentee09df7dee16a7b44711159c60c54cc9365be35e (diff)
Permissions is doneeee
Diffstat (limited to 'stepped-solutions/38/frontend/components/DeleteItem.js')
-rwxr-xr-xstepped-solutions/38/frontend/components/DeleteItem.js50
1 files changed, 50 insertions, 0 deletions
diff --git a/stepped-solutions/38/frontend/components/DeleteItem.js b/stepped-solutions/38/frontend/components/DeleteItem.js
new file mode 100755
index 0000000..e5e4752
--- /dev/null
+++ b/stepped-solutions/38/frontend/components/DeleteItem.js
@@ -0,0 +1,50 @@
+import React, { Component } from 'react';
+import { Mutation } from 'react-apollo';
+import gql from 'graphql-tag';
+import { ALL_ITEMS_QUERY } from './Items';
+
+const DELETE_ITEM_MUTATION = gql`
+ mutation DELETE_ITEM_MUTATION($id: ID!) {
+ deleteItem(id: $id) {
+ id
+ }
+ }
+`;
+
+class DeleteItem extends Component {
+ update = (cache, payload) => {
+ // manually update the cache on the client, so it matches the server
+ // 1. Read the cache for the items we want
+ const data = cache.readQuery({ query: ALL_ITEMS_QUERY });
+ console.log(data, payload);
+ // 2. Filter the deleted itemout of the page
+ data.items = data.items.filter(item => item.id !== payload.data.deleteItem.id);
+ // 3. Put the items back!
+ cache.writeQuery({ query: ALL_ITEMS_QUERY, data });
+ };
+ render() {
+ return (
+ <Mutation
+ mutation={DELETE_ITEM_MUTATION}
+ variables={{ id: this.props.id }}
+ update={this.update}
+ >
+ {(deleteItem, { error }) => (
+ <button
+ onClick={() => {
+ if (confirm('Are you sure you want to delete this item?')) {
+ deleteItem().catch(err => {
+ alert(err.message);
+ });
+ }
+ }}
+ >
+ {this.props.children}
+ </button>
+ )}
+ </Mutation>
+ );
+ }
+}
+
+export default DeleteItem;