Как передать данные из заголовков ответов в ApolloProvider с SSR? - PullRequest
1 голос
/ 18 февраля 2020

Я работаю с приложением, созданным с помощью Next js и Apollo. Я получаю токен в заголовки ответа Graphql. Я могу прочитать этот токен на стороне сервера, и мне нужно передать его провайдеру Apollo на стороне клиента.

cache.writeData({
    data: {
        isLoggedIn: false
    }
});

const afterwareLink = new ApolloLink((operation, forward) => {  
    return forward(operation).map(response => {
        const context = operation.getContext();
        const {
            response: { headers },
        } = context;

        if (headers) {
            const authorization = headers.get('authorization');

            if (authorization) {
                console.log(authorization);
                // what to do next? I need somehow set isLoggedIn to true...
            }
        }
        return response;
    });
});

const link = ApolloLink.from([
    afterwareLink,
    new RetryLink(),
    httpLink
]);

const client = new ApolloClient({  
    link,
    cache
});

function App({ children }){
    return (
        <ApolloProvider client={client}>
            {children}
        </ApolloProvider>
    );
}

Я попытался установить контекст внутри de ApolloLink:

    operation.setContext({ isLoggedIn: true });

Я не могу писать напрямую в кеш, потому что страница отображается на стороне сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...