From 222ab374d53a206332b1ab51c7c43f6d5dc7a31e Mon Sep 17 00:00:00 2001 From: Wes Bos Date: Tue, 8 Aug 2017 22:09:05 -0400 Subject: yep --- lib/initApollo.js | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 lib/initApollo.js (limited to 'lib/initApollo.js') 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 +} -- cgit v1.3