diff options
| author | Wes Bos <wesbos@gmail.com> | 2018-08-15 14:47:25 -0400 |
|---|---|---|
| committer | Wes Bos <wesbos@gmail.com> | 2018-08-15 14:47:25 -0400 |
| commit | 124f227a8235e08bddf8376e0b3d01d33c4414f3 (patch) | |
| tree | 1ea23e539e42c35ca0b609e2615c043aa6fc4219 /stepped-solutions/38/frontend/components/DeleteItem.js | |
| parent | ee09df7dee16a7b44711159c60c54cc9365be35e (diff) | |
Permissions is doneeee
Diffstat (limited to 'stepped-solutions/38/frontend/components/DeleteItem.js')
| -rwxr-xr-x | stepped-solutions/38/frontend/components/DeleteItem.js | 50 |
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; |
