From db6abcdc77cbdf60275bb0fdfc1ab23b38f551db Mon Sep 17 00:00:00 2001 From: "unique.mo" Date: Mon, 21 Jun 2021 22:50:21 +0800 Subject: [PATCH] feat: add specific headers to graphql client --- src/index.tsx | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/index.tsx b/src/index.tsx index 0f46eb3..7d0415e 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -1,6 +1,7 @@ import React from 'react' import ReactDOM from 'react-dom' -import { ApolloClient, InMemoryCache, ApolloProvider } from '@apollo/client' +import { ApolloClient, InMemoryCache, ApolloProvider, createHttpLink } from '@apollo/client' +import { setContext } from '@apollo/client/link/context' import App from './pages/App' import { GRAPHQL_SERVER } from 'constants/server' @@ -8,8 +9,24 @@ import 'normalize.css/normalize.css' import '@blueprintjs/core/lib/css/blueprint.css' import './styles/global.module.css' -const client = new ApolloClient({ +const httpLink = createHttpLink({ uri: GRAPHQL_SERVER, +}) + +const authLink = setContext((_, { headers }) => { + const session = JSON.parse(localStorage.getItem('__session') || '{}') + return { + headers: { + ...headers, + 'netease-user-id': session.userId, + 'netease-token': session.token, + 'netease-nick-name': session.profile?.nickname, + }, + } +}) + +const client = new ApolloClient({ + link: authLink.concat(httpLink), cache: new InMemoryCache(), })