blob: f8a363beb5043ee8ece667294b3895af54036398 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
import ApolloClient from 'apollo-boost';
import fetch from 'isomorphic-fetch';
import { endpoint } from '../config';
// Polyfill fetch() on the server (used by apollo-client)
if (!process.browser) {
global.fetch = fetch;
}
let apolloClient = null;
function create(initialState) {
return new ApolloClient({
uri: endpoint,
request: operation => {
if (typeof localStorage !== 'undefined' && localStorage.getItem('token')) {
operation.setContext({
headers: {
authorization: `Bearer ${localStorage.getItem('token')}`,
},
});
}
},
});
}
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;
}
|