diff options
Diffstat (limited to 'lib/initApollo.js')
| -rw-r--r-- | lib/initApollo.js | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/lib/initApollo.js b/lib/initApollo.js new file mode 100644 index 0000000..4ca3b05 --- /dev/null +++ b/lib/initApollo.js @@ -0,0 +1,37 @@ +import { ApolloClient, createNetworkInterface } from 'react-apollo' +import fetch from 'isomorphic-fetch' + +let apolloClient = null + +// Polyfill fetch() on the server (used by apollo-client) +if (!process.browser) { + global.fetch = fetch +} + +function create (initialState) { + return new ApolloClient({ + initialState, + ssrMode: !process.browser, // Disables forceFetch on the server (so queries are only run once) + networkInterface: createNetworkInterface({ + uri: 'https://api.graph.cool/simple/v1/cj5xz8szs28930145gct82bdj', // Server URL (must be absolute) + opts: { // Additional fetch() options like `credentials` or `headers` + credentials: 'same-origin' + } + }) + }) +} + +export default function initApollo (initialState) { + // Make sure to create a new client for every server-side request so that data + // isn't shared between connections (which would be bad) + if (!process.browser) { + return create(initialState) + } + + // Reuse client on the client-side + if (!apolloClient) { + apolloClient = create(initialState) + } + + return apolloClient +} |
