import gql from 'graphql-tag' import { graphql, compose } from 'react-apollo' const GetRef = gql` query GetRef($owner: String, $repo: String) { getRef(owner: $owner, repo: $repo) { } }` const GetRef = gql` query GetRef($owner: String, $repo: String, $ref: String) { getRef(owner: $owner, repo: $repo, ref: $ref) { ref url object { type sha url } } }` const PostRef = gql` mutation PostRef($refForm: RefFormInput! , $owner: String, $repo: String) { postRef(refForm: $refForm, owner: $owner, repo: $repo) { ref url object { type sha url } } }` const PutRef = gql` mutation PutRef($refUpdateForm: RefUpdateFormInput! , $owner: String, $repo: String, $ref: String) { putRef(refUpdateForm: $refUpdateForm, owner: $owner, repo: $repo, ref: $ref) { ref url object { type sha url } } }` const withAppSyncRef = compose( graphql(GetRef, { name: 'getRef', options: (ownProps) => ({ fetchPolicy: 'cache-and-network', variables: { owner: ownProps.owner, repo: ownProps.repo } }), props: (props) => { if (props.getRef.error) console.log(props.getRef.error) return props } }), graphql(PutRef, { props: (props) => ({ putRef: ownProps => props.mutate({ variables: { refUpdateForm: ownProps.refUpdateForm, owner: ownProps.owner, repo: ownProps.repo, ref: ownProps.ref }, optimisticResponse: () => ({ putRef: { ...ownProps.ref, __typename: 'Ref', version: 1 } }) }) }) }) ) export { GetRef, GetRef, PostRef, PutRef, withAppSyncRef }