import React from 'react'; import { Mutation } from 'react-apollo'; import PropTypes, { number } from 'prop-types'; import gql from 'graphql-tag'; import { withRouter } from 'next/router'; import { ALL_ITEMS_QUERY } from './Items'; import { PAGINATION_QUERY } from './Pagination'; import { perPage } from '../config'; const DELETE_ITEM_MUTATION = gql` mutation deleteItem($id: ID!) { deleteItem(id: $id) { id title description } } `; class DeleteItem extends React.Component { static propTypes = { id: PropTypes.string.isRequired, }; update = (cache, payload) => { const deletedItem = payload.data.deleteItem; let { page = 1 } = this.props.router.query; page = parseFloat(page); const skip = page * perPage - perPage; const variables = { skip }; const data = cache.readQuery({ query: ALL_ITEMS_QUERY, variables }); // filter this one out data.items = data.items.filter(item => item.id !== deletedItem.id); // write the data back to the cache console.log(data.items); cache.writeQuery({ query: ALL_ITEMS_QUERY, data, variables }); // FYI Pagination is broken with Apollo currently - will make a followup video }; render() { return ( {(removeItem, { error }) => ( )} ); } } export default withRouter(DeleteItem); export { DELETE_ITEM_MUTATION };