import React, { Component } from 'react' import { graphql, compose } from 'react-apollo' import UpdateItem from './UpdateItem'; import Link from 'next/link'; import styled from 'styled-components'; import TakeMyMoney from './TakeMyMoney'; import formatMoney from '../lib/formatMoney'; import { ALL_ITEMS_QUERY, DELETE_ITEM_MUTATION } from '../queries'; const Title = styled.h1` font-size: 50px; `; class ItemList extends Component { render() { // 1 if (this.props.allLinksQuery && this.props.allLinksQuery.loading) { return
Loading
} // 2 if (this.props.allLinksQuery && this.props.allLinksQuery.error) { console.log(this.props.allLinksQuery.error) return
Error
} // 3 const itemsToRender = this.props.allLinksQuery.allItems return (
Items For Sale {itemsToRender.map((item,i) => (

{ item.image ? : null }

{item.title}

{item.description}

Edit {item.id}
))}
) } } // 1 // We export the graphQL HOC - this will fetch the data and inject it into the ItemList compeont via props // Create some Enhancers const itemsEnahncer = graphql(ALL_ITEMS_QUERY, { name: 'allLinksQuery' }); const deleteItemEnhancer = graphql(DELETE_ITEM_MUTATION, { name: 'removeItemMutation', options: { update: (proxy, { data: { deleteItem } }) => { // grab the data from our cache const data = proxy.readQuery({ query: ALL_ITEMS_QUERY }); // filter out the delted item data.allItems = data.allItems.filter(item => item.id !== deleteItem.id); // and then "set state" (update cache), so it will update whereever we have used this data on the page proxy.writeQuery({ query: ALL_ITEMS_QUERY, data }); }, } }); export default compose(itemsEnahncer, deleteItemEnhancer)(ItemList)