import gql from 'graphql-tag' import { graphql, compose } from 'react-apollo' const GetHipchatInstallData = gql` query GetHipchatInstallData($installableUrl: String, $redirectUrl: String) { getHipchatInstallData(installableUrl: $installableUrl, redirectUrl: $redirectUrl) { name description key apiVersion capabilities { configurable { allowAccessToRoomAdmins url } hipchatApiConsumer { scopes fromName } installable { callbackUrl installedUrl allowGlobal allowRoom } oauth2Provider { tokenUrl authorizationUrl } } links { homepage api self } vendor { name url } } }` const PostHipchatInstallData = gql` mutation PostHipchatInstallData($hipchatInstallData: HipchatInstallDataInput! ) { postHipchatInstallData(hipchatInstallData: $hipchatInstallData) { } }` const DeleteHipchatInstallData = gql` mutation DeleteHipchatInstallData($oauthId: String) { deleteHipchatInstallData(oauthId: $oauthId) { } }` const withAppSyncHipchatInstallData = compose( graphql(GetHipchatInstallData, { name: 'getHipchatInstallData', options: (ownProps) => ({ fetchPolicy: 'cache-and-network', variables: { installableUrl: ownProps.installableUrl, redirectUrl: ownProps.redirectUrl } }), props: (props) => { if (props.getHipchatInstallData.error) console.log(props.getHipchatInstallData.error) return props } }) graphql(DeleteHipchatInstallData, { props: (props) => ({ deleteHipchatInstallData: ownProps => props.mutate({ variables: { oauthId: ownProps.oauthId }, optimisticResponse: () => ({ deleteHipchatInstallData: { ...ownProps, __typename: 'HipchatInstallData', version: 1 } }) }) }) }) ) export { GetHipchatInstallData, PostHipchatInstallData, DeleteHipchatInstallData, withAppSyncHipchatInstallData }