Files
dancefinder-app/utils/graph-client/utils.js
T

40 lines
1.2 KiB
JavaScript

const queryString = require('query-string');
const { createApolloFetch } = require('apollo-fetch');
const { includeCredentials } = require('./middleware');
const defaultGraphUri = 'https://dancefinder.unbound.se/graph';
const getGraphURI = () => {
let graphUri = defaultGraphUri;
try {
const loc = location; // eslint-disable-line
const search = (loc && loc.search) || '';
const host = (loc && loc.host) || '';
const query = queryString.parse(search);
const isLocal = host.includes('localhost');
if (query.graph) {
// if a query param is provided - always use that.
graphUri = query.graph;
} else if (isLocal) {
// If a query param is not provided - check if we're running locally or on heroku,
// and if so default to /graphql for mocking purposes
graphUri = '/graph';
}
} catch (err) {
// just suppress this madness
}
return graphUri;
};
export const createQuery = (tokenFn, query, variables) => { // eslint-disable-line
const apollo = createApolloFetch({ uri: getGraphURI() });
apollo.use(includeCredentials(tokenFn));
// apollo.useAfter(trackErrors);
return apollo({ query, variables });
};