import gql from 'graphql-tag' import { graphql, compose } from 'react-apollo' const GetSubscription = gql` query GetSubscription($guid: String, $organizationKey: String, $userGuid: String, $publication: publication, $limit: Int, $offset: Int) { getSubscription(guid: $guid, organizationKey: $organizationKey, userGuid: $userGuid, publication: $publication, limit: $limit, offset: $offset) { } }` const GetSubscription = gql` query GetSubscription($guid: String) { getSubscription(guid: $guid) { guid organization { guid key name namespace visibility domains { name } audit } user { guid email nickname name audit } publication audit } }` const PostSubscription = gql` mutation PostSubscription($subscriptionForm: SubscriptionFormInput! ) { postSubscription(subscriptionForm: $subscriptionForm) { guid organization { guid key name namespace visibility domains { name } audit } user { guid email nickname name audit } publication audit } }` const DeleteSubscription = gql` mutation DeleteSubscription($guid: String) { deleteSubscription(guid: $guid) { } }` const withAppSyncSubscription = compose( graphql(GetSubscription, { name: 'getSubscription', options: (ownProps) => ({ fetchPolicy: 'cache-and-network', variables: { guid: ownProps.guid, organizationKey: ownProps.organizationKey, userGuid: ownProps.userGuid, publication: ownProps.publication, limit: ownProps.limit, offset: ownProps.offset } }), props: (props) => { if (props.getSubscription.error) console.log(props.getSubscription.error) return props } }) graphql(DeleteSubscription, { props: (props) => ({ deleteSubscription: ownProps => props.mutate({ variables: { guid: ownProps.guid }, optimisticResponse: () => ({ deleteSubscription: { ...ownProps, __typename: 'Subscription', version: 1 } }) }) }) }) ) export { GetSubscription, GetSubscription, PostSubscription, DeleteSubscription, withAppSyncSubscription }