import gql from 'graphql-tag' import { graphql, compose } from 'react-apollo' const GetHook = gql` query GetHook($owner: String, $repo: String) { getHook(owner: $owner, repo: $repo) { } }` const GetHook = gql` query GetHook($owner: String, $repo: String, $id: Int) { getHook(owner: $owner, repo: $repo, id: $id) { id url test_url ping_url name events active config { url content_type } updated_at created_at } }` const PostHook = gql` mutation PostHook($hookForm: HookFormInput! , $owner: String, $repo: String) { postHook(hookForm: $hookForm, owner: $owner, repo: $repo) { id url test_url ping_url name events active config { url content_type } updated_at created_at } }` const DeleteHook = gql` mutation DeleteHook($owner: String, $repo: String, $id: Int) { deleteHook(owner: $owner, repo: $repo, id: $id) { } }` const withAppSyncHook = compose( graphql(GetHook, { name: 'getHook', options: (ownProps) => ({ fetchPolicy: 'cache-and-network', variables: { owner: ownProps.owner, repo: ownProps.repo } }), props: (props) => { if (props.getHook.error) console.log(props.getHook.error) return props } }) graphql(DeleteHook, { props: (props) => ({ deleteHook: ownProps => props.mutate({ variables: { owner: ownProps.owner, repo: ownProps.repo, id: ownProps.id }, optimisticResponse: () => ({ deleteHook: { ...ownProps, __typename: 'Hook', version: 1 } }) }) }) }) ) export { GetHook, GetHook, PostHook, DeleteHook, withAppSyncHook }