import gql from 'graphql-tag' import { graphql, compose } from 'react-apollo' const PutInvoice = gql` mutation PutInvoice($invoice: InvoiceInput! ) { putInvoice(invoice: $invoice) { id invoice_number po_number due_date amount_cents created_at } }` const GetInvoice = gql` query GetInvoice($invoiceNumber: String, $poNumber: String, $limit: Int, $offset: Int) { getInvoice(invoiceNumber: $invoiceNumber, poNumber: $poNumber, limit: $limit, offset: $offset) { } }` const withAppSyncInvoice = compose( graphql(GetInvoice, { name: 'getInvoice', options: (ownProps) => ({ fetchPolicy: 'cache-and-network', variables: { invoiceNumber: ownProps.invoiceNumber, poNumber: ownProps.poNumber, limit: ownProps.limit, offset: ownProps.offset } }), props: (props) => { if (props.getInvoice.error) console.log(props.getInvoice.error) return props } }), graphql(PutInvoice, { props: (props) => ({ putInvoice: ownProps => props.mutate({ variables: { invoice: ownProps.invoice }, optimisticResponse: () => ({ putInvoice: { ...ownProps.invoice, __typename: 'Invoice', version: 1 } }) }) }) }) ) export { PutInvoice, GetInvoice, withAppSyncInvoice }